Android 我们是否应该使用RecyclerView替换ListView?
Android文档说: RecyclerView小部件是的一个更高级、更灵活的版本 列表视图。此小部件是用于显示大型数据集的容器 通过保持有限的数量,可以非常有效地滚动 观点的多样性。在收集数据时使用RecyclerView小部件 其元素在运行时根据用户操作或网络发生变化 事件 事实上,如果效率不重要,Android 我们是否应该使用RecyclerView替换ListView?,android,listview,android-recyclerview,Android,Listview,Android Recyclerview,Android文档说: RecyclerView小部件是的一个更高级、更灵活的版本 列表视图。此小部件是用于显示大型数据集的容器 通过保持有限的数量,可以非常有效地滚动 观点的多样性。在收集数据时使用RecyclerView小部件 其元素在运行时根据用户操作或网络发生变化 事件 事实上,如果效率不重要,ListView可以完成上述所有工作,我们在使用RecyclerView替换ListView时发现了许多问题: 没有用于列表项选择的MClickListener() 列表项之间没有分隔符- 没有内
ListView
可以完成上述所有工作,我们在使用RecyclerView
替换ListView
时发现了许多问题:
RecyclerView
替换ListView
时,我们必须进行大量额外的编码才能达到与ListView
相同的效果。
问题:
- 我们是否值得将
全部替换为列表视图
李>回收视图
- 如果不是,那么在哪种情况下我们最好使用
而不是RecyclerView
,反之亦然ListView
1您可以使用界面提供单击侦听器。我也在ListView中使用这种技术。
2无分隔符:只需在行中添加一个宽度为匹配父视图,高度为1dp的视图,并为其提供背景色
3只需使用状态列表选择器作为行背景。
4在ListView中也可以避免添加HeaderView:只需将标题放在视图外部即可
因此,如果您关心的是效率,那么用RecyclerView替换ListView是一个好主意。如果ListView适合您,则没有理由迁移。 如果您正在编写一个新的UI,那么使用RecyclerView可能会更好 当您需要自定义列表或想要更好的动画时,RecyclerView功能强大。ListView中那些方便的方法给人们带来了很多麻烦,这就是为什么RecyclerView为它们提供了更灵活的解决方案
迁移所需的主要更改在适配器中。如果您想继续调用notifyDataSetChanged,您将失去大部分动画和绑定的好处。但是,如果您可以将适配器更改为分派详细的通知事件(添加/删除/移动/更新),则可以获得更好的动画和性能。这些事件允许RecyclerView选择正确的动画,还可以帮助它避免不必要的
onBind
调用。如果项目视图很复杂,您将获得巨大的好处。此外,今后,RecyclerView将有更多组件。使用ListView仍然可以的唯一情况是列表不是动态的或不受网络事件影响。例如:导航
对于任何其他用途,RecyclerView会使ListView黯然失色。由于RecyclerView只关心回收,因此在ListView中进行紧密耦合的视觉相关操作会更容易,例如更改位置/重新排列、动画(实际上它附带了RecyclerView.ItemAnimator
),自定义布局
另外,如果您想使用CardView,我相信这是唯一的选择。一个很好的选择是使用BaseAdapter。它支持使用Viewholder模式,我的包含100多行位图和按钮,运行非常平稳。直到最近,我还在使用ListView处理非常简单的列表。例如,如果我想显示一个简单的文本选项列表 我的决定基于“人为因素”,即如果性能无关紧要,那么用更少的代码创建一个简单的ListView会更好。我经常想起大学里的一位教授,他喜欢说:“我的老师伟大的尼克劳斯·沃思,帕斯卡的发明者,曾经说过,如果一个程序有超过50行的代码,它肯定是错的……” 但说服我停止使用ListView的是,它最近与RelativeLayout一起被移动到Android Studio设计工具中的“遗留”类别 我认为这是“不赞成”的“软”形式。如果它真的被弃用了,并且所有尽责的开发人员都将其代码迁移到RecyclerView,那么它的破坏性就太大了 此外,ListView的简介在顶部警告说,RecyclerView是一个更好的选择:“要获得更现代、更灵活、更高性能的列表显示方法,请使用RecyclerView。”
此外,《ListView指南》仍在讨论游标加载程序,但getSupportCursorLoader()本身在API 28中刚刚被弃用。
Android Studio最近的增强功能: 文件->新建->片段->片段(列表)
这为我们提供了一个充满基本文本的完整的RecylerView。这就消除了我使用ListView的最后一个真正原因,因为现在建立一个基本的RecylerView同样容易
总之,我根本不打算在新开发中使用ListView,因为将它标记为“遗留”是一步之遥。这些不是我的问题,我有每个问题解决方案的链接您的线程只是第一个问题,这不是我的问题,只要提到,如果您对使用折叠的动作栏感兴趣,您必须使用recyclerview。您应该使用recyclerview,因为它提供了比listview更多的控制。这有点复杂,但如果你能做到这一点,那么你的生活就会变得非常简单,无论你什么时候处理列表之类的事情。更好是好的敌人。你是指从服务器获取一个数据列表,然后存储在手机上的sqlite中,用于列表显示(比如说