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

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

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

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

那么,在什么情况下应该使用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模式

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

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

ListView和RecyclerView之间有很多区别,但你应该特别注意以下几点:

ViewHolder模式在ListView中是完全可选的,但它被烘焙到RecyclerView中。 ListView只支持垂直滚动,但RecyclerView并不局限于垂直滚动列表。

RecyclerView是一个新的ViewGroup,准备渲染任何 以类似的方式创建基于适配器的视图。它应该是 ListView和GridView的继承者,它可以在 最新的support-v7版本。已经开发了RecyclerView 考虑到可扩展性,因此可以创建任何类型的 你能想到的布局,但也不能没有一点恼人的地方 剂量。

安东尼奥·莱瓦的回答

 compile 'com.android.support:recyclerview-v7:27.0.0'

RecyclerView确实是一个比ListView强大的视图。 欲了解更多详情,请访问此页面。

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

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

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

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