Android RecyclerView恢复到浏览位置

前言:当离开当前Recyclerview跳转到另一个界面时,为了用户体验,很多app如微博都会记录下当前的浏览item位置,以方便跳转回来的时候自动恢复到上次浏览位置。



解决方案:Fragmengt布局里面放置RecyclerView

1、首先在onSaveInstanceState()里面保存离开RecyclerView界面时的位置position

    /*
     *  保存离开Fragment时的浏览位置
     */
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        if(layoutManager==null)
           layoutManager = new LinearLayoutManager(getContext());

        //返回当前RecycelrView中第一个可见的item的位置
        int position = layoutManager.findFirstVisibleItemPosition();
        outState.putInt("leavePosition",position);

        //获取与该view的顶部的偏移量
        int offset = 0;
        View currentView = layoutManager.findViewByPosition(position);
        if(currentView!=null)
        {
            offset = currentView.getTop();
        }
        outState.putInt("offset",offset);

    }

2、LinearLayoutManager的scrollToPositionWithOffset(int position,int offset)

     position表示滑动到指定item,offset表示item距离顶部的距离

   //滑动至上次离开时的浏览位置
      if (mySavedInstanceState!=null)
      {
          int leavePosition = mySavedInstanceState.getInt("leavePosition");
          int offset = mySavedInstanceState.getInt("offset");
          layoutManager.scrollToPositionWithOffset(leavePosition,offset);
      }

     *:定位到指定项,当offset为0时如果该项可以置顶就将其置顶显示


  3、参考文档

  记录RecyclerView滚动位置并恢复

  RecyclerView入门学习之LayoutManager


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java架构何哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值