RecyclerView
自Android API 22正式加入v7支持库
。并且很多人说它是对 ListView
的增强,并且在互联网上发布了许多关于它的用法的简要介绍。但这些文章大多非常简单、肤浅和空洞。增强功能只是 RecyclerView.ViewHolder
、RecyclerView.ItemAnimator
还是 RecylerView.SmoothScroller
?滚动期间项目 View 的回收和重用机制
是否与ListView
不同? RecyclerView
相对于 ListView
的增强
究竟是什么?
欢迎提供任何答案、提示或链接。提前致谢。
最佳答案
严格来说,And what exactly is the enhancement of RecyclerView over ListView?
RecyclerView
不是“ListView
”的“增强”。 ListView
实际上做了一些事情; RecyclerView
本身没有。更准确的比较是 RecyclerView
framework 是对 AdapterView
的改进,并且在某种程度上是 AbsListView
ListView
和 GridView
的父类。
RecyclerView
专注于 widget 回收和 gross child View
管理。它将其他一切委托(delegate)给其他类。 AdapterView
做的少得多,因此更难扩展功能。
注意事项:
在
RecyclerView
的可滚动空间内布置子项,委托(delegate)给管理人员。因此,不仅三个随recyclerview-v7
(列表、网格、交错网格)一起发布,而且还可以为替代场景开发其他的(例如,重叠的 child ,一个StackView
或Gallery
之类的体验)。来自适配器的更新可以多更细粒度。使用
AdapterView
,您几乎必须在任何重要更改时重新绘制整个 View (例如,ListView
及其所有行),尤其是在添加和删除项目时。RecyclerView
适配器中的更新机制指示发生变化的具体位置。这不仅需要更少的处理时间,而且有助于启用RecyclerView
为添加、移动和删除项目提供的动画效果(同样,通过可插入替换)。“融入”
ListView
的其他内容(例如绘制分隔线)现在被拉出到扩展点,例如ItemDecorator
。现在,您可以选择如何“装饰”项目,使用分隔线或框或彩色条分隔符或其他任何东西。装饰不仅限于“分隔线”,还可以影响 View 中的任何内容,出于某种原因,您认为这些内容与项目 View 本身是分开的。
RecyclerView
上手起来相当复杂。您从 ListView
中“开箱即用”获得的内容需要更多代码(您的或第三方库的)才能匹配。对于有经验的开发人员来说,这是一个功能,因为代码可以用其他代码替换。对于新手来说,这是一个错误,因为 RecyclerView
的学习曲线更陡峭,恕我直言。
关于android - RecyclerView 相比 ListView 有什么增强?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29425524/