RecyclerView和ListView比较

题记

RecyclerView说是目前最重要的控件也不为过,ListView虽然被RecyclerView光芒掩盖,但也仍有着自己的d地位;这个问题不是很偏重原理或实践,而更多的是,针对面试中会问到的一些知识点来分析。答时谨惕大而空、应当小而细;少说比错说好,说的深入比泛泛而谈好的多,最好能结合项目中用到的例子。

概述:

  • ViewHolder  在ListView中,ViewHolder需要自己来定义,且这只是一种推荐的使用方式,不使用当然也可以,这不是必须的。只不过不使用ViewHolder的话,ListView每次getView的时候都会调用findViewById(int),这将导致ListView性能展示迟缓。RecyclerView中使用RecyclerView.ViewHolder则变成了必须。
  • LayoutManager 你想控制数据的显示方式,列表显示、网格显示、瀑布流显示等等,之前你需要ListView,GridView和自定义View,而现在你可以通过RecyclerView的布局管理器LayoutManager控制

 

 

  • ItemAnimator  相比较于ListView,RecyclerView.ItemAnimator则被提供用于在RecyclerView添加、删除或移动item时处理动画效果。同时,如果你比较懒,不想自定义ItemAnimator,你还可以使用DefaultItemAnimator
  • Adapter  想要局部刷新某个Item,对于ListView来说,我们知道notifyDataSetChanged 来通知视图更新变化,但是该方法会重绘每个Item,而对于RecyclerView.Adapter 则提供了 notifyItemChanged 用于更新单个 Item View 的刷新,我们可以省去自己写局部更新的工作。(引出局部刷新的问题etc。。。)
  • ItemDecoration
    在ListView中如果我们想要在item之间添加间隔符,我们只需要在布局文件中对ListView添加如下属性,现在你可以使用RecyclerView的ItemDecoration,自由度更高。
  • OnItemTouchListener
    ListView通过AdapterView.OnItemClickListener接口来探测点击事件。而RecyclerView则通过RecyclerView.OnItemTouchListener接口来探测触摸事件。它虽然增加了实现的难度,但是却给予开发人员拦截触摸事件更多的控制权限。

 

注意:当我们想要一个列表显示控件的时候,需要支持动画,或者频繁更新,局部刷新,建议使用RecyclerView,更加强大完善,易扩展;其他情况下ListView在使用上反而更加方便,快捷。

 

问题:

(1)你的项目中为什么用的RecyclerView而不是ListView?

这个问题应该回答,RecyclerView相比ListView的优点和不可替代性,结合项目中的某些功能来说。

  • 项目中的列表需要频繁刷新,致使性能上recyclerView更优,
  • 布局样式是网格显示,RecyclerView更容易实现。
  • 用到了headerView和footerView(如何添加HeaderView以及FooterView

(2)RecyclerView和ListView性能比较?

说到性能,必然是分场景来说的,不然一边压倒性优势,另一个就没有存在的必要了

  • 在一些场景下,如界面初始化,滑动等,ListView和RecyclerView都能很好地工作,两者并没有很大的差异,
  • 但是在需要支持动画,或者频繁更新,局部刷新,建议使用RecyclerView,更加强大完善,易扩展

 

参考博客:https://www.cnblogs.com/wangle12138/p/8456508.html

https://www.cnblogs.com/ganchuanpu/p/8258459.html

https://mp.weixin.qq.com/s/IICVGAE4yzmsIl36QQ3Twg 

 

posted @ 2019-04-18 19:54  Ivo-oo  阅读(443)  评论(0编辑  收藏  举报