如何获得RecyclerView滚动位置

时间:2015-10-20 12:46:47

标签: android android-layout scroll android-recyclerview

我有一个包含RecyclerView的片段。当我从其他地方返回片段时,我会

if(null!=savedInstanceState) {
  mScrollPosition = savedInstanceState.getInt(ITEM_POSITION);
  mRecyclerView.scrollToPosition(mScrollPosition);
}

但现在我不知道在onSaveInstanceState内放什么:

@Override
public void onSaveInstanceState(Bundle bundle){
    super.onSaveInstanceState(bundle);
    Log.d(TAG, "onSaveInstanceState");
    mScrollPosition=mRecyclerView.getScrollPosition();//???
    bundle.putInt(NITEM_POSITION,mScrollPosition);
}

没有mRecyclerView.getScrollPosition()

更新

经过测试后发现,使用mRecyclerView.scrollToPosition并不足以确保顺畅的用户体验。如果项目视图足够高,scrollToPosition(ofFirstVisibleItem)可能会偏离。那么有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以从LayoutManager获取滚动。例如:

 mScrollPosition = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();

同时查看此答案How to save RecyclerView's scroll position using RecyclerView.State?