我正在尝试以编程方式滚动到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?
更新
实际上尝试使用不同的较长数据集时,不仅项目位置不可见这一事实 - 它似乎只是最后一个没有正确滚动的项目(例如最后三个)。
谢谢!