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

我应该在recyclerView中使用recyclerView,还是有更好的方法?

在RecyclerView中使用RecyclerView是可能的,但通常不是最佳的方法。RecyclerView是Android提供的一种用于展示大量数据的高效列表控件,它可以通过LayoutManager来实现不同的布局方式,如线性布局、网格布局等。然而,如果在RecyclerView的每个列表项中再嵌套一个RecyclerView,会导致嵌套层级过深,可能会影响性能和用户体验。

相反,更好的方法是使用RecyclerView的ItemDecoration来实现类似嵌套RecyclerView的效果。ItemDecoration是RecyclerView提供的一种装饰器,可以在列表项之间绘制分隔线、间距等效果。通过自定义ItemDecoration,可以实现类似嵌套RecyclerView的布局效果,同时避免了嵌套层级过深的问题。

另外,如果需要展示的数据结构比较复杂,可以考虑使用ExpandableListView或者RecyclerView的ExpandableLayoutManager来实现可展开的列表效果。这样可以在列表项中展示更多的信息,而无需嵌套RecyclerView。

总结起来,虽然在RecyclerView中使用RecyclerView是可能的,但一般情况下不推荐这样做。更好的方法是使用RecyclerView的ItemDecoration来实现类似嵌套RecyclerView的效果,或者考虑使用ExpandableListView或者RecyclerView的ExpandableLayoutManager来实现可展开的列表效果。

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

相关·内容

使用优化 | RecyclerView中可优化的点

所以说就算你没有使用 ViewHolder,你的 item 还是会被复用,不同的是他会重新进行 findViewById 的操作。 ​...从Cache 中拿到的缓存可直接进行使用,无需重新创建可绑定数据。...6,RecyclerView 中 item 广告的统计 在 ListView 中通过 getView() 方法进行统计是没有问题的。每次滑动的时候都会调用 getView() 方法。...onBindViewHolde 这个方法不是每次都调用的,有可能你看到了item 10 多次,但是只统计了 5,6次。这种情况下数据就是错误的。 如何解决呢?...每看到一次,这个方法就会执行一次 7,你可能不知道的 RecyclerView 性能优化策略 不要在 onBindViewHolder 方法中创建点击事件 在创建 ViewHolder 的时候创建

1.5K30

使用优化 | RecyclerView中可优化的点

所以说就算你没有使用 ViewHolder,你的 item 还是会被复用,不同的是他会重新进行 findViewById 的操作。 ​...从Cache 中拿到的缓存可直接进行使用,无需重新创建可绑定数据。...6,RecyclerView 中 item 广告的统计 在 ListView 中通过 getView() 方法进行统计是没有问题的。每次滑动的时候都会调用 getView() 方法。...onBindViewHolde 这个方法不是每次都调用的,有可能你看到了item 10 多次,但是只统计了 5,6次。这种情况下数据就是错误的。 如何解决呢?...每看到一次,这个方法就会执行一次 7,你可能不知道的 RecyclerView 性能优化策略 不要在 onBindViewHolder 方法中创建点击事件 在创建 ViewHolder 的时候创建

1.4K20
  • 安卓易学,爬坑不易——腾讯老司机的RecyclerView局部刷新爬坑之路

    话说有图有真相,首先来对比一下局部刷新前后的效果: 优化之前的效果: ? 优化之后的效果: ? 可以看到,优化之后,列表中的这张大图不在有一闪一闪亮晶晶的效果了! 那么,这是如何做到的呢?...好吧,此时已经有点崩溃了,显然这个也不是我要的结果,那么此时是否应该在静下来想一想,自己对于可能的几种原因做过的一些对策,是否有哪里遗漏了。经过思考,发现并没有!!...那么一定是还有其他的原因,没有考虑到! 还是去翻一翻RecyclerView的api吧,我注意到了这个api: ? ?...我了解到这个方法的使用方式是这样的: ?...总结 实际上RecyclerView做局部刷新是非常容易的,其实就是使用好带payload参数的这个notifyItemRangeChanged方法,以及override带payload的这个onBindViewHolder

    78520

    郭神的抽丝剥茧心法修炼: 深剖RecyclerView

    7000 行,但是注释没了以及其他的问题,我不得不使用其他版本的 RecyclerView 库。...如果你的代码中的 RecyclerView 没有使用 Wrap_Content,那么大部分使用场景中的 RecyclerView 长宽的 SpecMode 都为 EXACITY,我这么说,不是意味着我要抛弃...,从名字可以看出,这是一个回调的接口,所以,我猜动画的真实的执行应该在实现接口的方法中实现,不过,我们还是要先看 ViewInfoStore 中的动画如何执行: void process(ProcessCallback...这里有必要说明一下,一些删除或者新增操作,通过使用适配器中通知删除或者新增的方法,最终还是会通知界面进行重绘。...后续博客中,我将和大家一起学习 RecyclerView 中的其他部分。敬请期待!

    1.4K20

    RecyclerView性能优化的最后一公里

    很诡异的是,就算是到2021年的秋天,无论你怎么搜索,还是很难找到正确使用ViewCacheExtension的方法。...当我们穷尽所有方法,把RecyclerView调优方案都用尽了的时候,用好ViewCacheExtension就成了将RecyclerView性能优化到极致的最后一公里。...当然你可能会说,我用ConstraintLayout将布局优化到极致,我能力强而且能吃苦耐劳,前辈写的复杂且低效的布局我有信心有能力优化好。退一步讲,这些你都做的很好了。...❝答案当然是有。用ViewCacheExtension来优化。用它来优化RecyclerView初始化时创建View对主线程阻塞的时长。 ❞ 3. 从一个案例说起 首先模拟复杂View的场景。...linearLayout) linearLayout.removeView(itemView) //背景设置成红色为了更好的测试是否用到了正确缓存中的

    1.4K20

    RecyclerView滑动时卡顿怎么办?

    大家好,我近期刚完成了一个商城类的软件,首页就是用recyclerview的多布局实现的,近期的优化让我不得不去深入的了解一下recycleview这个控件。...1.recyclerview的item加载顺序 recyclerview 的使用大家肯定不陌生了,但是每个item的加载顺序还是有必要了解一下的,知道item显示出来的流程。..., 对于列表来说,不管用RecyclerView 还是ListView,我们都会用ViewHolder来复用布局。...3.优化图片加载 我在别的文章中看到并且用在了自己的软件中,图片加载的优化是最有效的办法,而且很多主流的app中新浪微博,qq,今日头条等也在使用,因为列表在滚动过程中,如果布局很复杂,样式也很多,那就需要考虑滚动的时候不做复杂布局及图片的加载...有问题去解决,总归RecyclerView是非常棒的控件,值得去学习,使用。 大家有什么问题可以留言,一起学习交流,或者有什么更好的办法,欢迎分享。

    3.4K20

    终于来了:Android端个人中心页面滑动冲突优化方案

    触发自身的滑动就是调用自己的 scrollBy(0,dy),注意 此时的事件还是会往下传递到 RecyclerView ,但是由于相对于 RecyclerView 自身来说滑动差值很小,视觉上可忽略。...出现问题时,用户的手先触发左右滑动,这时候由于 RecyclerView 父布局 ViewPager 中的一些临界判断没被触发,所以没拦截事件,事件还是到了 RecyclerView 中,此时如果再次上下滑动...2倍,进行拦截 我们需要把相关的判断代码都 copy 过来,然后加入到我们自定义 LinearLayout 中 image.png image.png 此时进行 Log 调试发现还是有问题, 原来...方法应该返回 true 。...以上是个人对于抖音“个人中心”页面滑动冲突优化的拙见及优化方案,仅仅是自己做过简单测试,个人觉得更好的方案可以使用谷歌的嫡系 CoordinatorLayout 来处理这种嵌套滑动。

    1K20

    Android开发之漫漫长途 XVI——ListView与RecyclerView项目实战

    至于怎么准备的,以及在面试中遇到的问题还有面试结果之类的,我们下面呢会挑一些与ListView和RecyclerView相关的内容说一下,至于其他的后文再说,毕竟不能打乱我们之前的行文安排(嗯,我就是这么一个十分有节操的人...面试中遇到的关于ListView以及RecyclerView的问题 第一题 ListView的缓存复用机制 还是免不得笔试啊,,起码我面试的几家公司有80%让我答一份试卷,而且给你的时间与试卷的复杂度基本上对应不上...有没有更好的方案。 然后面试官说了一句,可不可以考虑用RecyclerView作为根部局,然后嵌套RecyclerView呢,,我茅塞顿开,,然后就没有然后了。...ListView,还是正被广泛使用的RecyclerView,这两者都在面试中碰到过。...ListView:对于ListView来说,考察最多的是关于ListView的性能优化(其原理也是ListView的复用机制),使用ViewHolder,然后在重写的getView方法中复用convertView

    52010

    轻松掌握RecyclerView缓存机制

    RecyclerView 的缓存机制如何工作 RecyclerView 的缓存机制工作流程如下: 当 RecyclerView 需要展示一个新的 View 时,它会首先从 View Cache 中查找是否有可重用的...如果 View Cache 中没有可重用的 View,RecyclerView 会从 Scrap Cache 中查找是否有可重用的 View。...这样可以更好地释放内存,从而避免内存泄漏的问题。...使用多个 RecyclerView.Adapter 来处理不同类型的数据 对于不同类型的数据,使用不同的布局文件和 ViewHolder,从而更好地利用缓存池机制,并且避免不同类型数据混搭异常。...使用 setHasFixedSize() 方法 在 RecyclerView 初始化时调用 setHasFixedSize() 方法,可以告诉 RecyclerView 什么时候它的大小不会发生变化。

    56421

    MVVM架构之自动增删改的极简RecycleView的实现

    为啥要介绍他们呢,当然是为了让大家更好的了解内部的机制,在出现坑的时候不至于找不到解决方案,哈哈(当然我使用了这么久还没发现有坑)!...3.BindingAdapters:用过databinding的人都知道,如果我想定义一个xml中能使用的字段,就得构造一个方法,这个类就是RecycleView在xml中字段设置的构造字段的方法。...2.ViewModel中到底需不需要传入Context,我认为是需要的,原因有一下两点: 1.很多情况下在ViewModel中直接使用Activity比兜转半天回到Activity中调用方法,直观许多逻辑也清晰许多...- 3.值得注意的是:虽然我在UiViewModel中设置了监听器,但是如果涉及到数据存储以及业务逻辑的话,还是需要在ViewModel中进行的,所以我在UiViewModel中传入了具体的MainActivity...- 2.viewTypeCount():这个方法就是返回目前到底有几种布局。 - 2.我使用静态数据来初始化ObservableList,在这里大家在项目中会使用网络的数据。

    2K72

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

    也正是基于这点,我就不理解官方说的让开发者自行维护,怎么维护? 注释 2 中,官方告诉我们在这个方法中,不要去新建一个新的 ItemView,而是直接从旧的里面拿一个复用。...最最困惑的一点,国内居然找不到任何一篇讲解如何使用这个自定义缓存的相关文章!? 不清楚是由于他们文章的标题太过抽象没加入我的关键词过滤中,还是我关键词提取太烂,总之就是找不到任何一篇相关文章。...所以,这小节先埋个坑,我打算后续抽时间自己来研究一下,到底应该如何使用自定义 RecyclerView 的缓存策略,到底都有哪些应用场景。...并且,官方在注释中也给出一种应用场景:使用 ViewPager 时各页面中的 RecyclerView 有相同的 Item 布局结构。...所以,有时间有精力,还是建议深入源码中去学习,自己梳理出来的知识终归是自己的。

    1.3K30

    Android——RecyclerView自定义OnScrollListener实现下拉刷新监听,上拉加载更多功能

    【前言】 针对RecyclerView有很多开源的框架可以直接拿来用,比较有代表性的是BaseRecyclerViewAdapterHelper,功能很强大,具备上拉监听的功能。...使用开源的东西固然省时省力,但是前期自定义的Adapter使用较多,不想再更改了,且总使用开源的东西慢慢人都变傻了,这个功能不算复杂,就自己查找相关资料参照实现了。...为滑动中); onScrolled:滑动状态改变时方法会被调用,第一个参数recyclerView是当前的列表,xy为水平、垂直方向滑动坐标值,所以垂直方向,当y值>0时,说明列表正在向上滑动,方法可判断出当前是下滑还是上滑动作,覆写方法,结合加入可视区域第一条和最后一条item的位置,可以判断出下拉、上拉的动作,因此完全可以自定义RecyclerView.OnScrollListener...public void onRefresh() ; //下拉刷新的方法 } } 3、使用方法 1)RecyclerView的 public void addOnScrollListener

    3.6K30
    领券