如何刷新RecyclerView中显示的数据(在其适配器上调用notifyDataSetChanged),并确保将滚动位置重置为准确的位置?

如果ListView很好,则只需检索getChildAt(0),检查其getTop(),然后使用相同的精确数据调用setSelectionFromTop即可。

RecyclerView的情况下似乎不可能。

我猜我应该使用确实提供LayoutManagerscrollToPositionWithOffset(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/

10-12 01:17