0
我有一个包含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)
可以离开。那么是否有更好的解决方案呢?
虽然你有点回答了这个问题,它原来的假设是错误的。使用scrollToPosition实际上并不会将视图返回到它留下的位置:如果项目足够高,则用户非常清楚该位置已经移动。那么有没有更好的方式来做到这一点,而不是使用适配器位置? – learner
试试这个http://panavtec.me/retain-restore-recycler-view-scroll-position/ – HellCat2405
非常感谢。它看起来完全像我所需要的,但我不知道在哪里放什么。对不起,但我是在那个级别:)。例如,代码看起来不像我的片段。而且有很多部分。我知道这有点多,但你介意放哪里放什么?我相信这里的其他人也会很感激。 – learner