scrollToPosition只能正确滚动到RecyclerView中的可见项目

时间:2017-11-29 16:59:57

标签: android android-recyclerview

我正在尝试以编程方式滚动到RecyclerView中基于位置的项目。

如果位置在屏幕/渲染上可见,则滚动到RecyclerView适配器数据中的项目时,以下代码有效:

recyclerView.getLayoutManager()).scrollToPositionWithOffset(position, 0);

但是,如果我将位置设置为在屏幕上/渲染时尚未显示的值,则页面仅在可见/已渲染的最后一个项目的下方滚动。例如。它适用于前4个可见的项目,但不适用于屏幕外的4个项目。

有关额外的详细信息,适配器中的数据是在onSuccess回调中设置的:

// update the data in the adapter after hitting a REST API
adapter.updateItems(data);
adapter.notifyDataSetChanged();

// then I scroll to the position
recyclerView.getLayoutManager()).scrollToPositionWithOffset(position, 0);

调用滚动的其他方法没有用 - 例如只需致电recyclerView.scrollToPosition(position)

视图在BottomSheetDialog内呈现。

似乎有很多与类似事情有关的问题没有解决我的问题 - 例如RecyclerView - How to smooth scroll to top of item on a certain position?

更新

实际上尝试使用不同的较长数据集时,不仅项目位置不可见这一事实 - 它似乎只是最后一个没有正确滚动的项目(例如最后三个)。

谢谢!

0 个答案:

没有答案