带有DiffUtil问题的卧式RecyclerView

时间:2019-01-23 17:08:56

标签: android android-recyclerview

我有一个RecyclerView,其中包含水平项目。这些项目的修补程序为150dp height100dp width

加载片段后,我将默认项目设置为此视图。

此后,我打电话给getImages()房间,结果到达后,我便重建了这个RecyclerView。

enter image description here

如您在GIF中所看到的:

  • 已加载默认图像(2个带有播放按钮,3个带有专业图像)
  • 添加getImages()结果
  • 结果插入到第一个默认项目之前

“播放”按钮卡实际上具有修订ID("-1"),而专业按钮卡具有另一个修订("0"),并且每个图像项都有唯一的ID。

新项目被添加到第一项之前,用户看不到它。 RecyclerView不会滚动到第一项。 有什么解决方法可以在将第一个项目添加到第一名时将第一个项目推向右吗?

我尝试了smoothScrollToPosition,但在submitList()之后无法使用,也许还有什么更好的解决方案。

2 个答案:

答案 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