android recyclerview滚动到指定条目

自从android5.0推出RecyclerView以后,RecyclerView越来越受广大程序员的热爱了!大家都知道RecyclerView的出现目的是为了替代listview和ScrollView在列表方面的使用!那么listview和ScrollView的所有功能和方法都应该有的!

但是RecyclerView的很多方法,不是封装在RecyclerView中的,当我们在RecyclerView中找不到对应的方法时,就应该想到他的管理类manager了!
大多方法都封装在此啊!

      /*** RecyclerView 移动到当前位置,* 方法一,直接使用recycleview自身的manager的方法,需要处理下标越界的问题** @param manager 设置RecyclerView对应的manager* @param n       要跳转的位置*/public static void MoveToPosition(LinearLayoutManager manager, int n) {try {   //避免空指针越界,捕获异常manager.scrollToPositionWithOffset(n, 0);manager.setStackFromEnd(true);} catch (Exception e) {}}/*** 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);}}///方法三平滑滚动到指定的位置/*** 目标项是否在最后一个可见项之后*/private boolean mShouldScroll;/*** 记录目标项位置*/private int mToPosition;/*** 滑动到指定位置** @param mRecyclerView* @param position*/private void smoothMoveToPosition(RecyclerView mRecyclerView, final int position) {// 第一个可见位置int firstItem = mRecyclerView.getChildLayoutPosition(mRecyclerView.getChildAt(0));// 最后一个可见位置int lastItem = mRecyclerView.getChildLayoutPosition(mRecyclerView.getChildAt(mRecyclerView.getChildCount() - 1));if (position < firstItem) {// 如果跳转位置在第一个可见位置之前,就smoothScrollToPosition可以直接跳转mRecyclerView.smoothScrollToPosition(position);} else if (position <= lastItem) {// 跳转位置在第一个可见项之后,最后一个可见项之前// smoothScrollToPosition根本不会动,此时调用smoothScrollBy来滑动到指定位置int movePosition = position - firstItem;if (movePosition >= 0 && movePosition < mRecyclerView.getChildCount()) {int top = mRecyclerView.getChildAt(movePosition).getTop();mRecyclerView.smoothScrollBy(0, top);}} else {// 如果要跳转的位置在最后可见项之后,则先调用smoothScrollToPosition将要跳转的位置滚动到可见位置// 再通过onScrollStateChanged控制再次调用smoothMoveToPosition,执行上一个判断中的方法mRecyclerView.smoothScrollToPosition(position);mToPosition = position;mShouldScroll = true;}}//使用/*       mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);if (mShouldScroll) {mShouldScroll = false;smoothMoveToPosition(mRecyclerView, mToPosition);}}});if (TextUtils.equals(mCarBrandList.get(i).pinyin.charAt(0) + "", letter)) {if (i == 0) {//                            UIUtils.MoveToPosition(manager, mRecyclerView, i);smoothMoveToPosition(mRecyclerView,i);} else {smoothMoveToPosition(mRecyclerView,i+1);//                            UIUtils.MoveToPosition(manager, mRecyclerView, i + 1);}break;}*/

recyclerview滚动到指定条目相关推荐

  1. 用startSmoothScroll实现RecyclerView滚动到指定位置并置顶,含有动画。

    RecyclerView滚动到指定位置并置顶 RecyclerView本身提供了几个定位的方法,除了手动滑动的scrollTo,smootScrollTo和scrollBy,smoothScrollB ...

  2. Flutter ListView滚动到指定条目

    找遍全网没有看到listview滚动到指定条目的方法,基本都是通过条目的高度计算达到效果.这样比较麻烦.通过研究发现一种简单的方法,但是不能使用listview组件,需要使用SingleChildSc ...

  3. RecyclerView滚动到指定位置

    滚动到指定位置 recyclerView.scrollToPosition(position); 平滑滚动到指定位置 recyclerView.smoothScrollToPosition(posit ...

  4. 承接上一篇:说说评论弹出editext,计算软键盘高度,使listview,recyclerview上滑指定高度

    最近项目中遇到问题:就是当软键盘弹出,editext输入时,遮挡listview,recyclerview条目,体验效果不好: 网上搜集,验证,找了个好的方法,希望能给大家项目中带来帮助: 通过监听e ...

  5. RecyclerView滚动指定条目并在页面中居中

    RecyclerView滚动指定条目并在页面中居中 内容提要 本次的需求是通过指定position来控制条目滚动,并且要滚动到指定到中间的位置. 下面先上图,看看是不是你要 如下介绍主要的步骤 带着问 ...

  6. vue 点击div 获取位置_vue 点击元素滚动到指定位置

    {{item}} {{item}} data() {return{ navgator: ['列表A','列表B','列表C','列表D', ], navgatorIndex:0, listBox: [ ...

  7. 监听某个区域滚动_监听页面滚动及滚动到指定位置

    一.原生js通过window.onscroll监听 window.onscroll = function() { //为了保证兼容性,这里取两个值,哪个有值取哪一个 //scrollTop就是触发滚轮 ...

  8. ios开发之--令UITableView滚动到指定位置

    这个应用场景还是挺多的,代码如下: //获取到需要跳转位置的行数 NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:10 inSe ...

  9. vue利用 vue-animate-number插件动态展示数字(从0动态滚动到指定数字)

    vue利用 vue-animate-number插件动态展示数字(从0动态滚动到指定数字) 第一步:安装vue-animate-number插件 $ npm install vue-animate-n ...

最新文章

  1. 争论不休的TF 2.0与PyTorch,到底现在战局如何了? | 技术头条
  2. PhpExcel中文帮助手册|PhpExcel基本使用方法及常见问题解答
  3. 严重性代码说明项目文件行 禁止显示状态错误 C4996 fopen('fscanf'、strcmp):This function or variable may be unsafe. 最全解决办法
  4. CodeProject每日精选: Progress controls 进度条
  5. 旧文重发:程序员的七种武器
  6. [黑金原创教程][连载][iBoard 电子学堂][第八卷 设计任意波发生器]第三篇 直接数字合成(DDS)原理...
  7. 前端架构 IMVC 实时热更新模式
  8. 「2019冬令营提高组」不同的缩写
  9. 【Python刷题篇】——Python入门 01 输入输出
  10. 基于HTML5、JavaScript和CSS3的网页开发应用技术的网页
  11. assimp android build,Android assimp编译及引用
  12. 向工程腐化开炮:Java代码治理
  13. DataStory创始人兼CEO徐亚波博士获年度青年创业榜样奖项
  14. 设计的萌芽阶段_第一章 设计的萌芽阶段 第一节 设计概念的产生
  15. PHP等比缩放并补白
  16. 蓝蓝算法10-数字颠倒
  17. php制作登录页面的过程_PHP实现简单登录界面
  18. Skia深入分析6——skia中图像编解码代码概述
  19. 电源热敏电阻计算选择
  20. 2476 购买贺年卡

热门文章

  1. Error: Registry key ‘Software\JavaSoft\Java Runtime Environment’\CurrentVersion’
  2. 【雅思大作文考官范文】——第三篇:essay 'skeleton'(散文“骨架”)
  3. C语言变量的存储类别和生存期
  4. react native实现兼容Android与ios的视频播放器
  5. 怎么画图自动生成HTML,用canvas写一个简易画图工具
  6. BeyondCompare4使用脚本,每月一次
  7. moment.js 计算当前一周、一月对应日期
  8. GreenPlum 大数据平台--运维(三)
  9. 切换WiFi并配置静态或动态IP
  10. 几个免费的长链接缩短链接工具