如何刷新RecyclerView
中显示的数据(在其适配器上调用notifyDataSetChanged
),并确保将滚动位置重置为准确的位置?
如果ListView
很好,则只需检索getChildAt(0)
,检查其getTop()
,然后使用相同的精确数据调用setSelectionFromTop
即可。
在RecyclerView
的情况下似乎不可能。
我猜我应该使用确实提供LayoutManager
的scrollToPositionWithOffset(int position, int offset)
,但是检索位置和偏移量的正确方法是什么?layoutManager.findFirstVisibleItemPosition()
和layoutManager.getChildAt(0).getTop()
吗?
还是有一种更优雅的方式来完成工作?
最佳答案
我用这个。^ _ ^
// Save state
private Parcelable recyclerViewState;
recyclerViewState = recyclerView.getLayoutManager().onSaveInstanceState();
// Restore state
recyclerView.getLayoutManager().onRestoreInstanceState(recyclerViewState);
它比较简单,希望对您有所帮助!
关于android - 在RecyclerView中刷新数据并保持其滚动位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28658579/