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宽度
加载片段时,我会将默认项设置为此视图
在那之后,我进行了一个RoomgetImages()
调用,当结果到达时,我重建了这个RecyclerView
正如您在GIF中看到的:
- 加载默认图像(2个带播放按钮,3个带专业图像)
- 添加getImages()结果
- 结果插入到第一个默认项之前
“-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()并通知回收视图的代码