3 回答
TA贡献1811条经验 获得超6个赞
随着Android Lollipop的出现,RecyclerView正式问世。与ListView相比, RecyclerView更加强大,灵活并且具有重大改进。我将尝试为您提供详细的了解。
1)ViewHolder模式
在ListView中,建议使用ViewHolder模式,但这绝不是强制性的。如果是RecyclerView,则使用RecyclerView.ViewHolder类是强制性的。这是ListView和RecyclerView之间的主要区别之一。
它使RecyclerView中的事情变得更加复杂,但是我们在ListView中面临的许多问题都得到了有效解决。
2)布局管理器
这是RecyclerView的另一项重大改进。在ListView中,唯一可用的视图类型是垂直ListView。没有正式的方法甚至可以实现水平ListView。
现在使用RecyclerView,我们可以
i)LinearLayoutManager-支持垂直和水平列表,
ii)StaggeredLayoutManager-支持像交错列表这样的Pinterest,
iii)GridLayoutManager-支持显示在Gallery应用程序中看到的网格。
最好的是,我们可以根据需要动态地执行所有这些操作。
3)项目动画师
ListViews缺少对好的动画的支持,但是RecyclerView给它带来了一个全新的维度。使用RecyclerView.ItemAnimator类,对视图进行动画处理变得非常容易和直观。
4)物品装饰
对于ListViews,动态装饰项目(例如添加边框或分隔线)从未如此简单。但是在使用RecyclerView的情况下,RecyclerView.ItemDecorator类为开发人员提供了巨大的控制权,但使事情变得更加耗时和复杂。
5)OnItemTouchListener
借助 ListView的AdapterView.OnItemClickListener接口,拦截ListView上的项目单击非常简单。但是RecyclerView通过RecyclerView.OnItemTouchListener为其开发人员提供了更多的功能和控制权,但它使开发人员的工作变得有些复杂。
简而言之,RecyclerView比ListView更具可定制性,并为其开发人员提供了很多控制和功能。
TA贡献1831条经验 获得超10个赞
使用的另一个好处RecycleView是动画,可以用两行代码完成
RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
recyclerView.setItemAnimator(itemAnimator);
但是小部件仍然是原始的,例如,您不能创建header和footer。
TA贡献1784条经验 获得超7个赞
好吧,我挖这么点点发现比尔飞利浦这些宝石的文章上RecycleView
RecyclerView可以做的比ListView还要多,但是RecyclerView类本身的责任比ListView少。开箱即用,RecyclerView不会:
在屏幕上放置项目
动画视图
处理滚动以外的任何触摸事件
所有这些东西都放入了ListView,但是RecyclerView使用协作器类来完成这些工作。
您创建的ViewHolders也更加强大。它们是子类 RecyclerView.ViewHolder,它具有许多方法RecyclerView 用途。ViewHolders知道他们当前绑定到的位置,以及哪个项目ID(如果有)。在此过程中,ViewHolder 已被封为爵士。过去,ListView的工作是保留整个项目视图,而ViewHolder仅保留其中的一小部分。
现在,ViewHolder保留了该ViewHolder.itemView 字段中的所有内容,这是在ViewHolder的构造函数中为您分配的。
添加回答
举报