RecyclerView精确恢复到上次的位置

本文介绍了一种在Android应用开发中保存和恢复RecyclerView滚动位置的方法。通过定义两个成员变量来记录位置信息,并利用OnScrollListener的onScrollStateChanged()方法来更新这些变量。当需要返回之前的界面状态时,可以通过LinearLayoutManager的scrollToPositionWithOffset()方法精确恢复到之前的位置。

在项目开发中,我们可能遇到这样的需求:跳转到另一个界面,但是需要记录RecyclerView在之前的位置,以方便跳转回来的时候界面不变化。比如ES文件浏览器。

代码如下

定义两个成员变量:
    private int lastPosition = 0;
    private int lastOffset = 0;

记录位置,OnScrollListener,onScrollStateChanged()里添加:
                    View topView = mLayoutManager.getChildAt(0);          //获取可视的第一个view
                    lastOffset = topView.getTop();                                   //获取与该view的顶部的偏移量
                    lastPosition = mLayoutManager.getPosition(topView);  //得到该View的数组位置   

恢复位置:
                //mLayoutManager.scrollToPosition(lastPosition);
                //这样更精确
                ((LinearLayoutManager)mLayoutManager).scrollToPositionWithOffset(lastPosition, lastOffset);
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
1
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值