我应该将应用程序中的现有Listview更改为RecyclerView吗?

将我的应用程序中的现有Listview转换为RecyclerView有什么好处? 我什么时候应该使用RecyclerView?

这是一个难以回答的问题。 首先:将RecyclerView视为AdapterViews的后续产品,它带来了许多有用的改进,特别是在每个项目的animation领域。 实际上这也是Docs所说的:

RecyclerView是ListView的更高级和灵活的版本。 此小部件是用于大量视图的容器,可以非常有效地回收和滚动。 如果列表包含动态更改的元素,请使用RecyclerView小部件。

您还可以灵活地为此窗口小部件定义自定义布局管理器和animation。

因此,将来我们可能不会再使用ListViews了。 此外,当您从列表中添加或删除项目时,RecyclerView不需要任何类似"notifyDataSetChanged()"的内容,这在性能方面是一项巨大的改进。
如果你想通过说“更高级和更灵活的ListView版本”来了解谷歌的意思,我建议你阅读这篇博客文章在Android的RecyclerView上的第一眼 。

但要明确回答你的问题:

将我的应用程序中的现有Listview转换为RecyclerView有什么好处吗?
是。 正如已经说过的,RecyclerView更加灵活,并且免费提供便利的animation。 (就你自己而言)

我什么时候应该使用RecyclerView?
在适合ListView的地方,RecyclerView也是如此。

还有一个问题:
是否有必要从ListView切换到RecyclerView?
目前绝对没有! 您必须考虑到RecyclerView目前还不是最终的。 因此,在不久的将来可能会有一些变化,错误修复和新function。 (作为一个错误的例子: clipToPadding不起作用。幸运的是,它已被报道 )

我会尽力给你的问题详细解答。

随着Android Lollipop的出现, RecyclerView正式成功。 RecyclerViewfunction更强大,灵活,是ListView的主要增强function 。 我会尽力给你一个详细的见解。

1)ViewHolder模式

在ListView中,建议使用ViewHolder模式,但它从来不是强制性的。 对于RecyclerView,使用RecyclerView.ViewHolder类是必需的。 这是ListView和RecyclerView之间的主要区别之一。

它使RecyclerView中的事情变得更复杂,但我们在ListView中遇到的许多问题都得到了有效解决。

判决书

如果您已在ListViews中使用ViewHolder模式,则切换到RecyclerView将不会有任何更改。

2)LayoutManager

这是RecyclerView带来的另一项重大改进。 在ListView中,唯一可用的视图types是垂直ListView。 甚至没有官方的方法来实现水平ListView。

现在使用RecyclerView,我们可以拥有

i) LinearLayoutManager – 支持垂直和水平列表,

ii) StaggeredLayoutManager – 支持Pinterest,如交错列表,

iii) GridLayoutManager – 支持显示在Gallery应用程序中看到的网格。

最棒的是我们可以根据需要动态完成所有这些操作。

判决书

如果您的应用需要这种动态function,那么我强烈建议您使用RecyclerView。 还有其他方法可以做到这一点,但使用RecyclerView是最简单的方法。

3)物品animation师

ListViews缺乏对良好animation的支持,但RecyclerView为它带来了全新的维度。 使用RecyclerView.ItemAnimator类,animation视图变得如此简单直观。

判决书

我们也可以为ListView的项目制作animation,也不是那么困难,所以不是一个强有力的转换理由。

4)项目装饰

对于ListViews,动态装饰项目(如添加边框或分隔线)绝非易事。 但是在RecyclerView的情况下, RecyclerView.ItemDecorator类为开发人员提供了巨大的控制权,但却让事情变得更加耗时和复杂。

判决书

我们也可以在ListView中执行此操作,如果您不需要在装饰中进行那么多自定义,那么ListView可以随身携带。

5)OnItemTouchListener

由于其AdapterView.OnItemClickListener接口,截取ListView上的项目很简单。 但RecyclerView通过RecyclerView.OnItemTouchListener为开发人员提供了更多的function和控制,但它使开发人员的工作变得复杂。

判决书

这是我在RecyclerView中发现的最“不必要”复杂的事情之一,在ListViews的情况下更简单。

RecyclerView将是未来,它不仅仅是一个ListView2,@ reVeres的答案也很好地解释了这个案例。

是时候检查文档并进行一些测试,但现在不是时候切换,因为RecyclerView是support-v21,你不能在生产版本中使用它。