从逐渐被弱化的ListView说起
说到ListView,它曾经是Android UI开发中用的最多的组件之一,直到现在,很多应用还是用的ListView结构,但是现在逐渐被 androidx 中的 RecyclerView 所取代。
ListView的布局是自己实现的,
使用ViewHolder提高运行效率
ViewHolder 模式是提高 ListView 效率的一个很重要的方法。 ViewHolder 模式充分利用了 ListView 的视图缓存机制,避免了每次在调用 getView() 都通过 findViewById() 实例化控件。
1 | public View getView(int position,View convertView,ViewGroup parent){ |
孰优孰劣
在谷歌建议使用recyclerView的现在,为什么我们还在这里讨论孰优孰劣呢?
那么我们就先看看两个组件的优缺点:
ListView:
优点:
- 轻量级,当 view 只提供显示功能的话,代码简单。
缺点: - 实现功能相对有限,如果对于子view有更多功能要求的话,代码复杂。
- 只能纵向滑动,实现横向滑动代码复杂。
- 性能较差,需要自己改善代码,避免内存泄露。
RecyclerView
优点:
- 集成多个接口,功能强大。
- 由于交给LayoutManager,可实现各种滑动方向。
- 有完善的回收机制。
缺点: - 重量级,实现简单功能代码量较大。
所以说,对于一些功能简单的应用程序来说,ListView已经足够用了。例如现在微信中的卡券,由于没有实现复杂的动画以及其他事件,用ListView是刚好合适的。