作者:快乐生活HAPPY-GO | 来源:互联网 | 2023-05-21 20:28
我最近遇到了RecycleView
Android 5.0发布的android ,它似乎RecycleView
只是一个封装的传统ListView
,其中包含了ViewHolder模式,它促进了视图的重用,而不是每次都创建它.
使用的其他好处是RecycleView
什么?如果两者在性能方面具有相同的效果,为什么会选择使用RecycleView`?
编辑
我发现人们提出了类似的问题并且答案没有定论,在这里添加它们以保存记录.
Recyclerview与Listview
我们应该使用RecyclerView来取代ListView吗?
为什么RecyclerView没有onItemClickListener()?和RecyclerView如何与Listview不同?
1> Aritra Roy..:
随着Android Lollipop的出现,RecyclerView正式成功.RecyclerView功能更强大,更灵活,是ListView的主要增强功能.我会尽力给你一个详细的见解.
1)ViewHolder模式
在ListView中,建议使用ViewHolder模式,但它绝不是强制性的.对于RecyclerView,使用RecyclerView.ViewHolder类是必需的.这是ListView和RecyclerView之间的主要区别之一.
它使RecyclerView中的事情变得更复杂,但我们在ListView中遇到的许多问题都得到了有效解决.
2)LayoutManager
这是RecyclerView带来的另一项重大改进.在ListView中,唯一可用的视图类型是垂直ListView.甚至没有官方的方法来实现水平ListView.
现在使用RecyclerView,我们可以拥有一个
i)LinearLayoutManager - 支持垂直和水平列表,
ii)StaggeredLayoutManager - 支持交错列表等Pinterest,
iii)GridLayoutManager - 支持显示在Gallery应用程序中看到的网格.
最棒的是我们可以根据需要动态完成所有这些操作.
3)物品动画师
ListViews缺乏对良好动画的支持,但RecyclerView为它带来了全新的维度.使用RecyclerView.ItemAnimator类,动画视图变得如此简单直观.
4)项目装饰
对于ListViews,动态装饰项目(如添加边框或分隔线)绝非易事.但是在RecyclerView的情况下,RecyclerView.ItemDecorator类为开发人员提供了巨大的控制权,但却让事情变得更加耗时和复杂.
5)OnItemTouchListener
由于其AdapterView.OnItemClickListener接口,截取ListView上的项目很简单.但RecyclerView赋予更多的权力和控制它的开发由RecyclerView.OnItemTouchListener但它会使事情变得复杂一点的开发商.
简单来说,RecyclerView比ListView更具可定制性,并为开发人员提供了大量的控制和能力.
好答案.还有一些额外的巨大优势:RecyclerView在可见条目的前面和后面准备视图,如果你在后台获取位图,这是很好的.性能显着提高,尤其是使用RecyclerView.setHasFixedSize时.旧的ListView基于这样的前提:无法预先计算或缓存列表中条目的大小,这在滚动和执行布局时会导致疯狂的复杂化.需要一段时间才能适应它,但一旦你这样做,你就永远不会回去.
2> 小智..:
使用的另一个好处RecycleView
是动画,它可以用两行代码完成
RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
recyclerView.setItemAnimator(itemAnimator);
但是窗口小部件仍然是原始的,例如,您无法创建页眉和页脚.
而且你永远无法在这个意义上创建页眉和页脚.它们只是适配器中的其他视图类型.List视图将您的适配器包装在[`HeaderViewListAdapter`](http://developer.android.com/reference/android/widget/HeaderViewListAdapter.html)中,并在后台添加标头支持.使用`RecyclerView`,您就是控制者.
3> Mushtaq Jame..:
好吧,我挖这么点点发现比尔飞利浦这些宝石的文章上RecycleView
RecyclerView可以做的不仅仅是ListView,但RecyclerView类本身的责任要少于ListView.开箱即用,RecyclerView不会:
在屏幕上定位项目
动画视图
处理除滚动之外的任何触摸事件
所有这些东西都被用于ListView,但RecyclerView使用协作者类来代替这些工作.
您创建的ViewHolders也更加强大.它们是子类
RecyclerView.ViewHolder
,它有一堆方法RecyclerView
用途.ViewHolders
知道他们目前所处的位置,以及哪些项目ID(如果有的话).在这个过程中,ViewHolder
已被封为爵士.它曾经是ListView的工作,可以保持整个项目视图,并且ViewHolder
只保留它的一小部分.
现在,ViewHolder在该ViewHolder.itemView
字段中保留所有内容,这是在ViewHolder的构造函数中为您分配的.