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时发现了很多问题
:
没有用于列表项选择的 onItemClickListener() - solution
列表项之间没有分隔符 - solution
没有内置的重叠选择器,点击列表项时没有视觉反馈 - solution
没有 addHeaderView 用于列表标题 - solution
也许还有更多问题...
所以当我们用RecyclerView
来代替ListView
时,我们必须做很多额外的编码才能达到和ListView
一样的效果。
问题:
- Is it worth that we replace
ListView
withRecyclerView
totally ?- if not then in which case should we better use
RecyclerView
insteadListView
, 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/