列表适配器 vs RecyclerView适配器

33

我正在寻找在Android中使用列表适配器RecyclerView适配器之间的区别。它们在性能、优缺点方面有什么不同。


我认为这篇文章可以解决你的问题。ListAdapter旨在解决DiffUtil中的动画问题。 - Teo
但如果我使用RecycleView适配器和DiffUtil,我可以进行更多的自定义,那么是否有某种情况我们应该选择列表适配器呢? - Đàm Tùng
3个回答

47

ListAdapterRecyclerView.Adapter 的扩展。它在后台线程上使用 AsyncListDiff 计算列表之间的差异。

您可以显然地创建一个 RecyclerView.Adapter 以同样的方式工作。只是 ListAdapter 已经默认实现了这个原理。它定义了一个强制使用 DiffUtil 的约定,因此它的两个构造函数都需要一个 DiffChecker

如果您使用带有 AsyncDiffChecker 的 RecyclerView.Adapter,则性能将与使用 ListAdapter 相同。如果没有异步 Diff 检查器,则 ListAdapter 的性能将更好。


28

Recyclerview.Adapter

  • 如果列表是静态的,那么使用这个更好

ListAdapter

  • 如果列表是动态的,那么使用这个更好

1
最好提供两个示例。 - Marfin. F
1
例如,如果您更新列表项,或者从列表中删除或添加项目,则ListAdapter是更好的选择。如果您只想显示数据而不更新它,则Recyclerview.Adapter是更好的选择。 - Burak Dizlek

6

List Adapter是RecyclerView.Adapter的扩展,用于在RecyclerView中呈现列表数据,包括在后台线程上计算列表之间的差异。

它使用DiffUtil实用程序类来计算两个列表之间的差异,并输出一系列更新操作,将第一个列表转换为第二个列表。

在RecyclerView中使用LiveData是向适配器提供数据的简单方法,借助ListAdapter的帮助不再需要如此 - 当有新列表可用时,您可以直接调用submitList(List)。您可以在这里查看实现

因此,在静态内容的情况下,您可以使用RecyclerView.Adapter,但在动态内容的情况下,建议使用ListAdapter。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接