来自android开发者(创建列表和卡片):

RecyclerView小部件是一个更高级和灵活的版本 列表视图。

好吧,这听起来很酷,但当我看到这张示例图片时,我真的很困惑这两者之间的区别。

上面的图片可以通过ListView使用自定义适配器轻松创建。

那么,在什么情况下应该使用RecyclerView呢?


当前回答

除了以上差异之外,还有以下几个:

RV separates view creation and binding of data to view. In LV, you need to check if convertView is null or not for creating view, before binding data to it. So, in case of RV, view will be created only when it is needed but in case of LV, one can miss the check for convertview and will create view everytime. Switching between Grid and List is more easy now with LayoutManager. No need to notify and update all items, even if only single item is changed. One had to implement view caching in case of LV. It is provided in RV by default. (There is difference between view caching n recycling.) Very easy item animations in case of RV.

其他回答

为了使列表视图具有良好的性能,您需要实现holder模式,这很容易搞砸,特别是当您想用几种不同类型的视图填充列表时。

RecyclerView烘焙了这个模式,使它更难以搞砸。它也更灵活,更容易处理不同的布局,不是直线,如网格。

RecyclerView相对于listview的优点:

默认包含ViewHolder。 简单的动画。 支持水平,网格和交错布局

listView相对于recyclerView的优点:

易于添加分隔线。 可以使用内置的arrayAdapter简单的普通列表 支持页眉和页脚。 支持OnItemClickListner。

我只是想强调RecyclerView是兼容包的一部分。这意味着每个应用程序都有自己的RecyclerView实现,而不是使用来自操作系统的特性和代码。潜在地,类似RecyclerView的功能可以成为未来操作系统的一部分,从那里使用它是有益的。例如,Harmony OS很快就会发布。将来可以更改兼容性包许可证,这可能是一种暗示。缺点总结:

许可 更大的足迹,尤其是作为许多应用程序的一部分 如果一些来自操作系统的功能可以存在,那么效率就会下降

但值得注意的是,一些功能的实现,如滑动项目,来自RecyclerView。

以上所说的一切都必须加以考虑。

您可以使用接口来提供单击侦听器。我用这个 技术与ListViews。 无需分隔:只需在行中添加宽度为的视图 Match_parent和1dp的高度,并给它一个背景色。 简单地使用StateList选择器作为行背景。 addHeaderView也可以在ListViews中避免使用:只需将 视图外的标头。

所以,如果效率是你所关心的,那么是的,用RecyclerView替换ListView是个好主意。

RecyclerView信息

RecyclerView是在Android 5.0 (Lollipop)中引入的。它包含在支持库中。因此,它与Android API Level 7兼容。

与ListView类似,RecyclerView的主要思想是以一种性能友好的方式提供列表功能。这个视图名称中的“Recycler”部分并不是巧合。RecyclerView实际上可以回收它当前正在使用的项目。循环过程是通过一个名为View Holder的模式完成的。

RecyclerView的优点和缺点

优点:

集成的动画添加,更新和删除项目 通过使用ViewHolder模式强制循环视图 同时支持网格和列表 支持垂直和水平滚动 可以和DiffUtil一起使用吗

缺点:

增加了复杂性 没有OnItemClickListener

列表查看信息

ListView在Android诞生之初就已经存在了。它甚至可以在API级别1中使用,它与RecyclerView具有相同的用途。

ListView的用法其实很简单。在这方面,它不像它的后继者。学习曲线比RecyclerView更平滑。因此,它更容易掌握。我们不需要处理LayoutManager, ItemAnimator或DiffUtil之类的东西。

ListView的优点和缺点

优点:

简单的使用 默认的适配器 可用OnItemClickListener 它是expandabelistview的基础

缺点:

没有使用ViewHolder模式