Android RecyclerView:设置指定位置的两种方法


方法一,直接使用当前的manager

    /* RecyclerView 移动到当前位置

    * @param manager  设置RecyclerView对应的manager

    * @param n  要跳转的位置 */    

        public static void MoveToPosition(LinearLayoutManager manager, int n) {

                        manager.scrollToPositionWithOffset(n, 0);

                        manager.setStackFromEnd(true);

           }

方法二、根据当前RecyclerView的条目数量,这个相对复杂一些,但是可以有效地避免指针越界

public static void MoveToPosition(LinearLayoutManager manager, RecyclerView mRecyclerView, int n) {

    int firstItem = manager.findFirstVisibleItemPosition();

    int lastItem = manager.findLastVisibleItemPosition();

    if (n <= firstItem) {

        mRecyclerView.scrollToPosition(n);

    } else if (n <= lastItem) {

        int top = mRecyclerView.getChildAt(n - firstItem).getTop();

        mRecyclerView.scrollBy(0, top);

    } else {

        mRecyclerView.scrollToPosition(n);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,233评论 25 709
  • 餐厅里已经摆好了丰富的午餐菜肴,宾主合起来还不满一桌,左老头给左妈妈准备了一碗长寿面,大家祝了她生日快乐。左妈妈与...
    美美的睡一觉阅读 2,206评论 0 2
  • 虹姐承诺要写中美职场文化差异,今天先来第一篇。 在咱中国文化里,埋头苦干是美德。不信你看人家雷锋,被树成典型就是因...
    虹姐说阅读 4,775评论 0 3
  • 公司一同事这两天离职了。 他加入公司时间并不长。作为他的Leader,我花了很多心思挽留他,但最终没能改变他的决定...
    圈外散人阅读 3,456评论 0 0
  • 我只是站在云端 在你的两眉间 点上一个血红的亮点 你来时,亮点标记,白昼 你走了,亮点不见,黑夜 我有我的爱的方式...
    忠志_3d7b阅读 1,592评论 5 6