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

/* RecyclerView 移动到当前位置,     *     * @param manager  设置RecyclerView对应的manager     * @param n  要跳转的位置     */    public static void MoveToPosition(LinearLayoutManager manager, int n) {        manager.scrollToPositionWithOffset(n, 0);        manager.setStackFromEnd(true);    }

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

/** * RecyclerView 移动到当前位置, * * @param manager   设置RecyclerView对应的manager * @param mRecyclerView  当前的RecyclerView * @param n  要跳转的位置 */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);    }}

更多相关文章

  1. android线程相关1
  2. android View的三个构造方法 简单总结
  3. Android抓包方法
  4. okhttp源码学习分析一
  5. Android开发经验总结
  6. Android倒计时实现
  7. android dialog 背景透明的样式
  8. Android(安卓)框架:快速开发中Util常用工具类总结
  9. Android之动态改变控件大小

随机推荐

  1. 使用 Xtrabackup 在线对MySQL做主从复制
  2. 阿里云服务器忘记mysql的登录密码时候如
  3. 如何从MySQL DBs的不同表中提取create语
  4. 装机建项目vs2017和mysql5.7下建项目用EF
  5. 是一个mysql临时表,每个用户访问创建它的
  6. MySQL 一对多查询
  7. 中文乱码问题
  8. 可以在SELECT语句中嵌入描述语法吗?
  9. MySQL判断索引存在并删除索引的存储过程
  10. Linux上跑MySQL优化技巧