首页
学习
活动
专区
工具
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

60210

关于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

RecyclerView优化实战指南

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

41820

recycleview优化_recyclerview原理

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

3.6K20

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

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

60340

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

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

1.5K10

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
领券