Android 带有DiffUtil问题的水平回收视图

Android 带有DiffUtil问题的水平回收视图,android,android-recyclerview,Android,Android Recyclerview,我有一个带有水平项的RecyclerView。这些项目具有固定的150dp高度和100dp宽度 加载片段时,我会将默认项设置为此视图 在那之后,我进行了一个RoomgetImages()调用,当结果到达时,我重建了这个RecyclerView 正如您在GIF中看到的: 加载默认图像(2个带播放按钮,3个带专业图像) 添加getImages()结果 结果插入到第一个默认项之前 Play button卡实际上有固定id(“-1”),pro有另一个固定id(“0”),每个图像项都有唯一的id 新

我有一个带有水平项的
RecyclerView
。这些项目具有固定的
150dp高度
100dp宽度

加载片段时,我会将默认项设置为此视图

在那之后,我进行了一个Room
getImages()
调用,当结果到达时,我重建了这个RecyclerView

正如您在GIF中看到的:

  • 加载默认图像(2个带播放按钮,3个带专业图像)
  • 添加getImages()结果
  • 结果插入到第一个默认项之前
Play button卡实际上有固定id(
“-1”
),pro有另一个固定id(
“0”
),每个图像项都有唯一的id

新项目添加在第一个项目之前,用户看不到它。RecyclerView不会滚动到第一项。 当一个新项目添加到第一位时,是否有任何解决方案将第一个项目向右推


我尝试了
smoothScrollToPosition
,但在
submitList()
之后它就不起作用了,也许哪里有更好的解决方案。

尝试使用
scrollToPosition(0)

如果这不起作用,请尝试添加一个小延迟是否可以修复它,如下所示:

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        recyclerView.scrollToPosition(position); // Or maybe `smoothScrollToPosition()`
    }
}, 300); // Try a delay of 200 or 300 ms

你所要做的就是使用Recyclerview的平滑滚动条

 smoothScroller = new LinearSmoothScroller(this) {
        @Override
        protected int getHorizontalSnapPreference() {
            return LinearSmoothScroller.SNAP_TO_ANY;
        }
    };
然后当您想要滚动到recyclerview的第一个位置时

 smoothScroller.setTargetPosition(0);
 horizontalLayoutManagaer.startSmoothScroll(smoothScroller);

似乎是重复的。显示更多代码很难编辑您看不到的内容。请记住。如果“滚动到位置”不起作用,您可以重新初始化适配器并设置为“recyclerview”,默认情况下,它将滚动到顶部。请查看此项。虽然我对接受的解决方案不是很满意,但如果您不使用滚动条,这可能对您有用。请粘贴适配器的代码以及调用getImages()并通知回收视图的代码