猿问

Android Recyclerview与带有Viewholder的ListView

最近,我遇到了RecycleView与Android 5.0一起发布的android 系统,它似乎RecycleView只是一种封装了传统ListView视图,并结合了ViewHolder模式,该模式促进了视图的重用,而不是每次都创建视图。


使用的其他好处是RecycleView什么?如果两者在性能方面都具有相同的效果,为什么还要选择使用RecycleView`?


繁花不似锦
浏览 972回答 3
3回答

杨魅力

随着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更具可定制性,并为其开发人员提供了很多控制和功能。

慕哥6287543

使用的另一个好处RecycleView是动画,可以用两行代码完成RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();        recyclerView.setItemAnimator(itemAnimator);但是小部件仍然是原始的,例如,您不能创建header和footer。

噜噜哒

好吧,我挖这么点点发现比尔飞利浦这些宝石的文章上RecycleViewRecyclerView可以做的比ListView还要多,但是RecyclerView类本身的责任比ListView少。开箱即用,RecyclerView不会:在屏幕上放置项目动画视图处理滚动以外的任何触摸事件所有这些东西都放入了ListView,但是RecyclerView使用协作器类来完成这些工作。您创建的ViewHolders也更加强大。它们是子类 RecyclerView.ViewHolder,它具有许多方法RecyclerView 用途。ViewHolders知道他们当前绑定到的位置,以及哪个项目ID(如果有)。在此过程中,ViewHolder 已被封为爵士。过去,ListView的工作是保留整个项目视图,而ViewHolder仅保留其中的一小部分。现在,ViewHolder保留了该ViewHolder.itemView 字段中的所有内容,这是在ViewHolder的构造函数中为您分配的。
随时随地看视频慕课网APP
我要回答