我有一个RecyclerView
,其中包含水平项目。这些项目的修补程序为150dp height
和100dp width
。
加载片段后,我将默认项目设置为此视图。
此后,我打电话给getImages()
房间,结果到达后,我便重建了这个RecyclerView。
如您在GIF中所看到的:
“播放”按钮卡实际上具有修订ID("-1"
),而专业按钮卡具有另一个修订("0"
),并且每个图像项都有唯一的ID。
新项目被添加到第一项之前,用户看不到它。 RecyclerView不会滚动到第一项。 有什么解决方法可以在将第一个项目添加到第一名时将第一个项目推向右吗?
我尝试了smoothScrollToPosition
,但在submitList()
之后无法使用,也许还有什么更好的解决方案。
答案 0 :(得分:1)
您所要做的就是使用Recyclerview的平滑滚动器
smoothScroller = new LinearSmoothScroller(this) {
@Override
protected int getHorizontalSnapPreference() {
return LinearSmoothScroller.SNAP_TO_ANY;
}
};
然后当您要滚动到recyclerview的第一位置时
smoothScroller.setTargetPosition(0);
horizontalLayoutManagaer.startSmoothScroll(smoothScroller);
答案 1 :(得分:-2)
尝试改用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