如何在Recyclerview
或Layoutmanager
中获取滚动位置?
我可以通过添加一个OnScrollListener
来测量滚动位置,但是当Orientation改变时scrollDy
是0。
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
int scrollDy = 0;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
scrollDy += dy;
}
});
最佳答案
为了将来使用,如果您在同一 activity
中的 Fragments
之间切换,并且您想要做的只是 save scroll-position for recyclerview
然后将recyclerview
恢复到相同的滚动位置,可以如下操作:
在您的 onStop()/onDestroyView()/onPause()
中更合适的回调,请执行以下操作:
Parcelable recylerViewState = recyclerView.getLayoutManager().onSaveInstanceState();
并且在您的 onStart()/onCreateView()/onResume()
中,无论哪个回调更合适,请执行以下操作:
recyclerView.getLayoutManager().onRestoreInstanceState(recylerViewState);
这样您就可以成功地将您的 recyclerView 的
状态保持在 parcelable
并随时恢复它。
关于java - 如何在 Recyclerview/Layoutmanager 中获取 Scrollposition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29581782/