![](/img/trans.png)
[英]Scroll to last position if user does not scroll (RecyclerView) Android Studio
[英]scroll to last position of recyclerview
销毁或暂停应用程序后,我想滚动到recyclerview的最后保存位置。 我已使用以下代码在SharedPreferences
保存相关位置和偏移量
@Override
public void onPause() {
super.onPause();
QueryPreferences.setLastPos(getActivity(), String.valueOf(((LinearLayoutManager) mRecyclerView.getLayoutManager()).findFirstVisibleItemPosition()));
QueryPreferences.setLastOffset(getActivity(), String.valueOf(mRecyclerView.computeVerticalScrollOffset()));
}
下面的代码获取位置和偏移量,然后滚动到recyclerview的最后一个位置:
@Override
public void onResume() {
super.onResume();
updateUI();//initialization of recyclerview and adapter
//final int scrllPosition=Integer.parseInt(QueryPreferences.getLastPos(getActivity()));
final int scrllOffset=Integer.parseInt(QueryPreferences.getLastOffset(getActivity()));
mLayoutManager.scrollToPositionWithOffset(0,-scrllOffset);//scrolling down
//I also tried mRecyclerView.scrollBy(0, scrllOffset);
}
如果我将offset设置为零,则滚动不会出现任何问题(滚动到项目顶部),但是当我设置offset时,即使使用Handler().postDelayed
应用了延迟,recyclerview也会滚动到另一个项目(不是上次保存的项目位置Handler().postDelayed
。 我应该注意,使用computeVerticalScrollOffset()
,我得到的偏移量高达73000,这意味着该偏移量相对于第一项(位置0)。 如何正确获取偏移量并滚动到具有正确偏移量的所需项目? 先感谢您。
设置LayoutManager&并在以下代码的帮助下滚动到特定位置。
只需设置setStackFromEnd=true
或setReverseLayout=true
以便LLM setReverseLayout=true
布局项目。
mLinearLayoutManager = new LinearLayoutManager(this);
mLinearLayoutManager.scrollToPosition(yourList.size());
// yourList是要传递给RecyclerView适配器的ArrayList。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.