android - 我们应该使用 RecyclerView 来代替 ListView 吗?

标签 android listview android-recyclerview

Android 文档说:

The RecyclerView widget is a more advanced and flexible version of ListView. This widget is a container for displaying large data sets that can be scrolled very efficiently by maintaining a limited number of views. Use the RecyclerView widget when you have data collections whose elements change at runtime based on user action or network events

其实ListView只要不影响效率就可以做到以上所有,而我们在使用RecyclerView代替ListView:

  1. 没有用于列表项选择的 onItemClickListener() - solution

  2. 列表项之间没有分隔符 - solution

  3. 没有内置的重叠选择器,点击列表项时没有视觉反馈 - solution

  4. 没有 addHeaderView 用于列表标题 - solution

也许还有更多问题...

所以当我们用RecyclerView来代替ListView时,我们必须做很多额外的编码才能达到和ListView一样的效果。

问题:

  • Is it worth that we replace ListView with RecyclerView totally ?
  • if not then in which case should we better use RecyclerView instead ListView, and vice versa ?

最佳答案

如果 ListView 适合您,则没有理由迁移。 如果你正在编写一个新的 UI,你最好使用 RecyclerView。

当您需要自定义列表或想要更好的动画时,RecyclerView 非常强大。 ListView 中那些方便的方法给人们带来了很多麻烦,这也是 RecyclerView 为他们提供更灵活的解决方案的原因。

您需要进行迁移的主要更改是在您的适配器中。如果您想继续调用 notifyDataSetChanged,您将失去大部分动画和绑定(bind)优势。但是,如果您可以更改适配器以调度详细的通知事件(添加/删除/移动/更新),那么您将获得更好的动画和性能。这些事件让 RecyclerView 选择正确的动画,它还有助于避免不必要的 onBind 调用。如果您的项目 View 很复杂,您将获得巨大的好处。此外,今后还会有更多 RecyclerView 周围的组件。

关于android - 我们应该使用 RecyclerView 来代替 ListView 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392554/

相关文章:

android - 包含 SupportMapFragment 的 SherlockFragment 不会第二次打开

android - 如何使用 CursorAdapter 将 Filter 设置为 ListView?

listview - 更改 Android 上的 Xamarin.Forms Listview 中的默认 TextColor

java - 添加到 Collection 夹随机字符串并将其显示在 View 列表中

java - 显示后如何检测每个 RecyclerView item

android - 我的应用显示与 Nexus 5 不兼容?

android - ClusterManager 不重绘标记

java - 在单个 ListView 中左右对齐

android - 无法解决:com.android.support:cardview-v7:26.0.0 android

java - 使用 glide 从服务器加载图像