注意点

1.滑动到指定位置的方法要写在数据真正加载完成以后,而不是加载数据方法的后面。

2.指定的位置是否可见。

快速定位

public static void MoveToPosition(int n) {

manager.scrollToPosition(n);

}

缓慢定位(借鉴网络上整理)

/**

* 缓慢滑动

*

* 当指定位置位于第一个可见位置之上时,可以滚动,利用smoothScrollToPosition实现

* 当指定位置位于可视位置之间时,得到距离顶部的距离,然后smoothScrollBy向上滚动固定的距离

* 当指定的位置位于最后一个可见位置之下时,可以滚动,利用利用smoothScrollToPosition实现实现

*/

public void moveToPosition(int position) {

int firstItem = mRecyclerView.getChildLayoutPosition(mRecyclerView.getChildAt(0));

int lastItem = mRecyclerView.getChildLayoutPosition(mRecyclerView.getChildAt(mRecyclerView.getChildCount() - 1));

if (position < firstItem||position>lastItem) {

mRecyclerView.smoothScrollToPosition(position);

} else {

int movePosition = position - firstItem;

int top = mRecyclerView.getChildAt(movePosition).getTop();

mRecyclerView.smoothScrollBy(0, top);

}

}

另一种获得可见位置的方法

public void moveToPosition(RecyclerView recyclerView, int position) {

RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();

//因为只有LinearLayoutManager 才有获得可见位置的方法

if (layoutManager instanceof LinearLayoutManager) {

LinearLayoutManager linearLayoutManager = (LinearLayoutManager) layoutManager;

int firstItem = linearLayoutManager.findFirstVisibleItemPosition();

int lastItem = linearLayoutManager.findLastVisibleItemPosition();

if (position < firstItem || position > lastItem) {

mRecyclerView.smoothScrollToPosition(position);

} else {

int movePosition = position - firstItem;

int top = mRecyclerView.getChildAt(movePosition).getTop();

mRecyclerView.smoothScrollBy(0, top);

}

}

}

结语

菜鸟的学习足迹,有错误还请指正,笔芯

~喵印

recyclerview 滑动到当前_Android recyclerview的滑动到指定的item相关推荐

  1. RecyclerView跳转到指定位置,RecyclerView上下滑动监听,RecyclerView滑动速度

    1.RecyclerView跳转到指定位置 只需调用recycleview的置顶方法: recyclerView.scrollToPosition(15); 如果你需要让第15item在屏幕居中,只需 ...

  2. Android取消RecyclerView、ListView、ScrollView、HorizontalScrollView滑动到边缘闪现灰白色水波纹动画

    Android取消RecyclerView.ListView.ScrollView.HorizontalScrollView滑动到边缘闪现灰白色水波纹动画 标准的Android RecyclerVie ...

  3. Android 横向列表滑动自动选中,RecyclerView实现;

    RecyclerView实现横向滑动后自动选中条目,点击其它条目自动移动到中间位置并选中: 横向的列表就是上面的效果,下面是动图: 效果就是这样的 , 有当前选中回调 , 也可以设置当前选中的条目: ...

  4. viewpager 自定义翻页效果_Android RecyclerView自定义LayoutManager

    在第一篇中已经讲过,LayoutManager主要用于布局其中的Item,在LayoutManager中能够对每个Item的大小,位置进行更改,将它放在我们想要的位置,在很多优秀的效果中,都是通过自定 ...

  5. android 嵌套分组拖动_Android NestedScrolling嵌套滑动机制

    Android NestedScrolling嵌套滑动机制 最近项目要用到官网的下拉刷新SwipeRefreshLayout,它是个容器,包裹各种控件实现下拉,不像以前自己要实现事件的拦截,都是通过对 ...

  6. android 滑动取值_Android中滑屏实现

    前言:  虽然本文标题的有点标题党的感觉,但无论如何,通过这篇文章的学习以及你自己的实践认知,写个简单的滑屏小 Demo还是justso so的. 友情提示: 在继续往下面读之前,希望您对以下知识点有 ...

  7. Android 淘宝滑动条,淘宝菜单滑动条;

    淘宝菜单滑动条,图如下: 实现一下这个效果 , 上面是列表,可以用RecyclerView实现 , 下面跟随菜单滑动的条可以用View做位移动画实现: <LinearLayout xmlns:a ...

  8. 【RecyclerView】 十二、RecyclerView 数据更新 ( 修改单条数据 | 批量修改数据 )

    文章目录 一.修改单条数据 二.批量修改数据 三.完整代码示例 四.RecyclerView 相关资料 一.修改单条数据 修改单条数据 : 调用 RecyclerView.Adapter 的 void ...

  9. 【RecyclerView】 九、为 RecyclerView 设置不同的布局样式

    文章目录 一.为 RecyclerView 设置不同的布局样式 二.完整代码 三.RecyclerView 相关资料 一.为 RecyclerView 设置不同的布局样式 为 RecyclerView ...

最新文章

  1. Android环境搭建和Android HelloWorld—Android开发环境搭建
  2. Vue项目中使用wangEditor富文本输入框(推荐)
  3. P2480 [SDOI2010]古代猪文
  4. linux命令tree
  5. Qt Designer的小部件编辑模式
  6. jquery右下角自动弹出关闭层
  7. 信息学奥赛一本通(1160:倒序数)
  8. 韩国央行行长李柱烈:加密货币的波动给金融稳定带来风险
  9. React-Native 之 GD (三)近半小时热门
  10. 苹果发信用卡——大数据解读硅谷巨头如何发力金融科技
  11. 基于Matlab的随机森林算法实现(附算法介绍及代码详解)
  12. CentOS7下ldap的安装
  13. oracle omf管理,使用OMF管理表空间
  14. 基于MATLAB平台实现红绿灯(交通灯)识别
  15. 提升效率:优化Java代码的35个小技巧
  16. Linux下禁用root远程登录并且新建一个用户赋予root权限
  17. java modbus4j_java使用modbus4j来实现modbusTCP通信
  18. 微信小程序开发实现登陆教程
  19. 应用案例 | 12年雪佛兰科鲁兹网络故障
  20. matlab 在半对数坐标系下绘图

热门文章

  1. 解决AttributeError: XXX instance has no attribute ‘xxx‘的问题(新手必备)
  2. Eclipse中创建SpringBoot项目流程,及报错解决方案
  3. VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法)
  4. vs2019下载和更新速度非常慢的解决方案
  5. iis 网页HTTP 错误 404.3 - Not Found解决方案
  6. Akka的好用例[关闭]
  7. Android Studio 打开后无故爆红后解决办法
  8. Lync Server 2010迁移至Lync Server 2013故障排错Part1:缺少McsStandalone.msi
  9. linux的yum update命令
  10. this.name=name;和this.setName(name);的区别