首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

以编程方式将嵌套的RecyclerView滚动到某个位置

嵌套的RecyclerView是指在一个RecyclerView的Item中再嵌套了一个RecyclerView。编程方式将嵌套的RecyclerView滚动到某个位置可以通过以下步骤实现:

  1. 获取外层RecyclerView的LayoutManager对象,可以通过getLayoutManager()方法获取。
  2. 根据需要滚动到的位置,计算出内层RecyclerView所在的Item位置和内层RecyclerView需要滚动到的位置。
  3. 获取内层RecyclerView的LayoutManager对象,可以通过getChildAt()方法获取外层RecyclerView中对应位置的Item View,然后使用getChildViewHolder()方法获取ViewHolder,再通过ViewHolder的itemView属性获取内层RecyclerView。
  4. 调用内层RecyclerView的scrollToPosition()方法,将其滚动到指定位置。

以下是一个示例代码:

代码语言:txt
复制
// 获取外层RecyclerView的LayoutManager
LayoutManager outerLayoutManager = outerRecyclerView.getLayoutManager();

// 计算内层RecyclerView所在的Item位置和需要滚动到的位置
int outerItemPosition = 0; // 外层RecyclerView中的Item位置
int innerItemPosition = 0; // 内层RecyclerView中的Item位置
int innerScrollPosition = 10; // 内层RecyclerView需要滚动到的位置

// 获取内层RecyclerView所在的Item View
View outerItemView = outerLayoutManager.getChildAt(outerItemPosition);
ViewHolder outerViewHolder = outerRecyclerView.getChildViewHolder(outerItemView);
RecyclerView innerRecyclerView = outerViewHolder.itemView.findViewById(R.id.inner_recycler_view);

// 获取内层RecyclerView的LayoutManager
LayoutManager innerLayoutManager = innerRecyclerView.getLayoutManager();

// 将内层RecyclerView滚动到指定位置
innerLayoutManager.scrollToPosition(innerScrollPosition);

这样,通过编程方式,可以将嵌套的RecyclerView滚动到指定位置。请注意,示例代码中的R.id.inner_recycler_view需要替换为实际内层RecyclerView的ID。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ItemTouchHelper 实现交互动画

在onMove方法中处理拖拽回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item位置时候被调用。在onSwiped方法当Item被滑动删除到不见中处理被删除后逻辑。...为了降低代码耦合度,可以通过接口listener回调方式交给外部处理。...上下拖动时与其他item进行位置交换 ItemTouchHelper.Callback本身不具备两个item互换位置功能,但RecyclerView可以,我们可以在item拖动时候把当前item与另一个...控件滑动到顶部和底部 02.RecyclerView嵌套RecyclerView 条目自动上Bug 03.ScrollView嵌套RecyclerView滑动冲突 04.ViewPager嵌套水平RecyclerView...横向滑动到底后不滑动ViewPager 05.RecyclerView嵌套RecyclerView滑动冲突问题 06.RecyclerView使用Glide加载图片导致图片错乱问题解决 24.ScrollView

3.8K20

自定义 Behavior,实现嵌套滑动、平滑切换周月视图日历

简介 先上个小米日历图,让大家知道要做一个什么效果: [strip] 这是小米日历效果,在用户操作列表时候,日历折叠成周视图,扩大列表显示区域,同时也不影响日历部分功能使用,有趣且实用。...一种是通过建立依赖关系,一种是通过 RecyclerView 或 NextedScrollView 嵌套滑动机制,后面都会讲到。...当嵌套滑动结束时会回调 onStopNestedScroll 方法,可以在这里根据当前控件位置,判断是否要切换视图。...惯性滑动 上面效果可以看出一个问题,当滑动到一半时候松手,应该要恢复到完整视图位置。这里包含了,快速滑动后惯性滑动到指定位置效果,和没有快速滑动时,往就近指定位置滑动这两种效果。...效果 看一下最终效果: [strip] 这种实现方式优点是代码量少,用起来方便。使用了 MaterialCalendarView 并且没有修改它源码,意味着支持它所有功能。

3.1K10

ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

解决事件滑动冲突思路及方法 ScrollView 里面嵌套ViewPager导致滑动冲突 ViewPager里面嵌套ViewPager 导致滑动冲突 轮播图几种实现方式 文章首发地址CSDN:...RecyclerView 上面的 View 被滑动到界面之外,看不见,这时候用户体验是比较差 即结构如下面的时候 ?...但是该方法存在缺点,就是当我们上面的view如果滑动到一半时候,切换到下一个Fragment,在切换回来时候,RecyclerView第一个item会自动滑动到顶部。.../ 在 ViewPagerActivity 里面的 Fragment 代码中加入以下代码,可以阻止 RecyclerView 子 View 获得焦点,从而阻止 RecyclerView 抢占位置。...对于这种效果,上面是轮播图,下面是RecyclerView或者ListView,一般有一下几种实现方式 - 使用我们上述提高ScrollView里面嵌套ViewPager和RecyclerView

5.6K51

ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

Layout 里面多多个孩子时候,当下面一个孩子是 RecyclerView 或者ListView 时候,往往会自动滑动到 ListView 或者 RecyclerView 第一个 item,导致进入界面的时候会导致...但是该方法存在缺点,就是当我们上面的view如果滑动到一半时候,切换到下一个Fragment,在切换回来时候,RecyclerView第一个item会自动滑动到顶部。.../ 在 ViewPagerActivity 里面的 Fragment 代码中加入以下代码,可以阻止 RecyclerView 子 View 获得焦点,从而阻止 RecyclerView 抢占位置。...或者ListView,一般有一下几种实现方式 使用我们上述提高ScrollView里面嵌套ViewPager和RecyclerView,这种实现方式需要自己解决View滑动事件冲突,同时还有我在上述提高在...题外话 在这篇博客最后提高实现轮播图+list列表几种实现形式,刚开始是不想写,后面因为ScrollView里面嵌套ViewPager和RecyclerView在fragment中RecyclerView

61210

关于RecyclerView你知道不知道都在这了(下)目录正文

多行可局部滑动.png 以上布局实现是外层一个竖直方向 RecyclerView,它每一个 Item 都是占据一行水平方向 RecyclerView,也就是嵌套 RecyclerView 方式...然后在 runPendingAnimations() 方法中,依次遍历这些集合,记录动画取出来执行,动画实现方式是通过 View.animate() 方式实现,这种方式动画本质上是借助了 ValueAnimator...,默认动画时长 250ms 旧 ItemView:透明度从原有值 ~ 0,位置从原坐标移动到新 ItemView 坐标的动画组合 新 ItemView:透明度从 0 ~ 1,位置从旧 ItemView...坐标移动到新坐标的动画组合 animateMove -> 从原坐标位置动到新坐标位置移动动画,默认动画时长 250 ms animateRemove -> 从原有透明度 ~ 0 动画,默认动画时长...外,内部View之间横竖都以相同空隙间隔开 //实现方式水平方向为例: //每个viewleft和bottom都设置相同间隙 //去掉第1列left

1.2K30

RecyclerView必知必会

Demo6: RecyclerView实现万能适配器,瀑布流布局,嵌套滑动机制。...RecyclerView提供了notifyItemInserted(),notifyItemRemoved(),notifyItemChanged()等API更新单个或某个范围Item视图。...add动画错乱,这里mPendingAdditions内容移动到局部变量additions中,然后遍历additions执行动画。...具体实现如下: 然后通过以下代码为RecyclerView设置该滑动、拖拽功能: 前面拖拽触发方式只有长按,如果想支持触摸Item中某个View实现拖拽,则核心方法为helper.startDrag...嵌套滑动机制 Android 5.0推出了嵌套滑动机制,在之前,一旦子View处理了触摸事件,父View就没有机会再处理这次触摸事件,而嵌套滑动机制解决了这个问题,能够实现如下效果: 为了支持嵌套滑动

4.6K20

recycleview优化_recyclerview原理

RecyclerView元素比较高,一屏只能显示一个元素时候,第一次滑动到第二个元素会卡顿。...这个机制会导致一个问题,启动应用之后,在屏幕可见范围内,如果只有一张卡片可见,当滚动时 候,RecyclerView找不到可以重用view了,它将创建一个新,因此在滑动到第二个feed时候就会有一定延时...具体实现方式是:在 RecyclerView 开始一个滚动时new Runnable对象,根据 layout manager 和滚动方向预取即将进入视野条目,可以同时取出一个或多个条目,例如在使用...,滑动暂停后再加载;RecyclerView中存在几种绘制复杂,占用内存高楼层类型,但是用户只是快速滑动到底部,并没有必要绘制计算这几种复杂类型,所以也可以考虑对滑动速度,滑动状态进行判断,满足条件后再加载这几种复杂...(false);//RecyclerView默认是setNestedScrollingEnabled(true),是支持嵌套滚动,也就是说当它嵌套在NestedScrollView中时,默认会随着NestedScrollView

3.7K20

RecyclerView优化实战指南

本文介绍一些优化技巧,帮助你更好地使用 RecyclerView。 简介 RecyclerView 是 Android 一个高级 UI 组件,用于展示大量数据。...RecyclerView 可以大大简化开发过程,但是如果不进行优化,它可能会导致一些性能问题。下面介绍一些优化技巧,帮助你充分发挥 RecyclerView 性能。...减少布局中嵌套层级 布局中嵌套层级越多,性能就越低,所以需要尽可能减少嵌套层级。可以使用 ConstraintLayout 或者扁平布局来减少嵌套层级。 7....禁止自动滑动 当数据项发生变化,RecyclerView 默认会自动滚动到位置。...结论 通过本文,我们介绍了一些优化 RecyclerView 技巧,包括使用 DiffUtil、使用 ViewHolder、使用异步加载、合理使用布局管理器、使用数据绑定、减少布局中嵌套层级、设置 RecyclerView

43520

AndroidTv Home界面实现原理(一)——Leanback 库使用

目前重点研究第一张实现方式吧,毕竟 Google Leanback 库实现出来效果跟第一张有一些共同点,因此可以从 Leanback 入手来学习它是如何实现。...要我实现的话,思路就是 RecyclerView 嵌套 RecyclerView 来实现,先不谈 RecyclerView 这种滑动控件在 Tv 上会出问题,嵌套这个坑就足够你填了。...但这样嵌套仍会有许多问题出现,比如快速移动时焦点丢失、性能问题、每一行 View 如何缓存、复用等。...相关代码.png 初始化 ArrayObjectAdapter 对象时需传入一个 Presenter 进去,这里跟 RecyclerView 使用有些不同,在 RecyclerView 里,我们是...如果你运行了爱奇艺 Tv 应用,你会发现,它焦点在移动到边界时 item 会有抖动效果,这又要如何实现呢?

2.6K70

RecycleView三问—腾讯真题

,包含数据和position信息,复用时必须是相同位置ViewHolder才能复用,应用场景在那些需要来回滑动列表中,当往回滑动时,能直接复用ViewHolder数据,不需要重新bindView。...mRecyclerPool(缓存池),当cacheView满了后或者adapter被更换,cacheView中移出ViewHolder放到Pool中,放之前会把ViewHolder数据清除掉,所以复用时需要重新...25.1.0 (>=21)及以上使用Prefetch 功能,也就是预取功能,嵌套时且使用是LinearLayoutManager,子RecyclerView可通过setInitialPrefatchItemCount...Adapter 是一样,比如嵌套 RecyclerView 中存在一样 Adapter,可以通过设置 RecyclerView.setRecycledViewPool(pool);来共用一个 RecycledViewPool...这样就减少了创建VIewholder开销。 在RecyclerView元素比较高,一屏只能显示一个元素时候,第一次滑动到第二个元素会卡顿。

1.2K40

Android 基于RecyclerView实现歌词滚动自定义控件

((;′⌒`)) 接下来说一下实现原理: 该控件分为以下几个部分: 歌词自动滚动 歌词颜色字体变化 触碰屏幕歌词不滚动,高亮显示,离开时自动移动到当前歌词位置 触碰屏幕中间线条出现以及显示该歌词时间... Runable 实现类修饰为 static 。所以歌词列表索引位置有所变化。...所以我们应该重新写一个 Runable() 来控制它自动移动到当前位置。这样子的话各做各事情,在写逻辑时候会比较容易理顺。...这个要分为四种情况: 第一种: 当前歌词在屏幕之外:由于我是打算歌词移动到屏幕中第四个位置。 那么我就需要找到屏幕中第一个位置,还有当前显示是哪一句歌词。...但是我们在 RecyclerView 中是处理了点击事件,而且本身 RecyclerView 就已经重写了拦截了该事件。而且一般是父 View 是不拦截事件

1.6K10

2-VII-RecyclerView事件

[1].本文接上文:RecyclerView基本使用 [2].RecyclerView把很多事都交给了我们,就连item点击事件都没有 [3].在adapter中加载布局时候,可以为item...添加事件 [4].没有点击效果,还要自己添加点击选择器 [5].RecyclerView增删条目以及条目运动效果 ---- 一、点击事件 方式1.修改:FirstRvAdapter#onCreateViewHolder...2:可以添加回调,事件推到Activity中 1.FirstRvAdapter中监听点击事件 public FirstViewHolder onCreateViewHolder(final ViewGroup...mAdapter.addData(position, ZRandom.randomCnName()); mRecyclerView.scrollToPosition(0);//滑动到某个条目...增加与删除.gif 本文由张风捷特烈原创,转载请注明 更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http

60540

RecyclerView 必知必会

Demo6: RecyclerView实现万能适配器,瀑布流布局,嵌套滑动机制。...RecyclerView提供了notifyItemInserted(),notifyItemRemoved(),notifyItemChanged()等API更新单个或某个范围Item视图。...为了防止在执行add动画时外面有新add动画添加到mPendingAdditions中,从而导致执行add动画错乱,这里mPendingAdditions内容移动到局部变量additions中,然后遍历...(adapter, data)); helper.attachToRecyclerView(recyclerview); 前面拖拽触发方式只有长按,如果想支持触摸Item中某个View实现拖拽,则核心方法为...嵌套滑动机制 Android 5.0推出了嵌套滑动机制,在之前,一旦子View处理了触摸事件,父View就没有机会再处理这次触摸事件,而嵌套滑动机制解决了这个问题,能够实现如下效果: ?

2.5K70

android gallery当前view变大,GitHub – hutcwpGalleryViewDemo: 实现画廊效果(中间放大两边缩小)无限循环向左滑向右滑,Viewpager和Recycl

:28.0.0’ 一个是ViewPager所在包,另一个是RecyclerView所在包 RecyclerView实现GalleryView效果可(伪无限)无限左滑右滑 先上效果图 要点: 在有限数据里面...试图回收机制 在有限数据里面,实现无限个Item 在RecyclerView.Adapter方法中: @Override public int getItemCount() { return...,监听 ViewPager 滚动事件,当滑到边界时,设置当前 position 为中间某个 item,不过这种方式容易出现页面闪动导致滑动不连贯,这是因为 ViewPager#setCurrentItem...1,也就是滑动到第0个item位置时,则直接跳转到倒数第二个view处,并关闭跳转动画 mViewPager.setCurrentItem(mPagerAdapter.getCount() – 2,...false); } else if (position > mPagerAdapter.getCount() – 2) { //同理如果item位置大于倒数第二个view位置,也就是滑动到最后一个

2.1K20
领券