Android RecyclerView与ListView
来自android开发者(): RecyclerView小部件是的一个更高级、更灵活的版本 列表视图 好的,听起来很酷,但是当我看到这个示例图片时,我真的很困惑这两者之间的区别 上面的图片可以通过使用自定义适配器Android RecyclerView与ListView,android,listview,android-recyclerview,Android,Listview,Android Recyclerview,来自android开发者(): RecyclerView小部件是的一个更高级、更灵活的版本 列表视图 好的,听起来很酷,但是当我看到这个示例图片时,我真的很困惑这两者之间的区别 上面的图片可以通过使用自定义适配器ListView轻松创建 那么,在什么情况下应该使用RecyclerView 要使列表视图具有良好的性能,您需要实现holder模式,这很容易出错,尤其是当您想用几种不同类型的视图填充列表时 RecyclerView将此图案烘焙,使其更难弄乱。它也更灵活,更容易处理不同的布局,而不是像
ListView
轻松创建
那么,在什么情况下应该使用
RecyclerView
要使列表视图具有良好的性能,您需要实现holder模式,这很容易出错,尤其是当您想用几种不同类型的视图填充列表时
RecyclerView将此图案烘焙,使其更难弄乱。它也更灵活,更容易处理不同的布局,而不是像网格一样的直线布局。
RecyclerView
是作为ListView
的改进而创建的,因此可以使用ListView
控件创建附加列表,但使用RecyclerView
更容易:
列表视图
适配器中实现视图保持器实现,但这是可选的,而在循环视图
中,这是写入适配器的默认方式LayoutManager
,您可以在运行时轻松地将列表项放入不同的容器(linearLayout、gridLayout)项目动画制作者
李>
还有更多关于回收视图的信息,但我认为这些是主要的
因此,总而言之,RecyclerView
是处理“列表数据”的一个更灵活的控件,它遵循关注点的委托模式,只为自己留下一个任务——回收项目
RecyclerView
是一个新的视图组,准备呈现任何
以类似的方式创建基于适配器的视图。这是最好的
ListView和GridView的后续版本,可以在
最新的support-v7版本
。回收视图
已经开发完成
考虑到可扩展性,因此可以创建任何类型的
布局你可以想到,但不是没有一点痛苦的屁股
剂量
答案取自
RecyclerView
确实是一个比ListView
更强大的视图。
有关更多详细信息,您可以访问。
ListView
是RecyclerView
的前身。有许多事情不是做得不好,就是做得不好。如果您要收集列表视图的缺点
,并通过将问题抽象到不同的域来解决问题,那么您最终会得到类似于recycler视图的东西。以下是ListView的主要问题点:
- 没有对相同的项目类型强制执行
重用(查看视图
中使用的一个适配器,如果您研究getView方法,您将看到没有任何东西阻止程序员为每一行创建新视图,即使通过列表视图
变量传入一行)convertView
- 没有阻止昂贵的
使用(即使您如上所述循环使用视图,开发人员也可以调用findViewById
来更新子视图的显示内容。findViewById
中的listview
模式的主要目的是缓存ViewHolder
调用。但是,这只有在您知道的情况下才可用。)因为它根本不是平台的一部分)findViewById
- 仅支持行显示视图的垂直滚动(Recycler视图不关心视图的放置位置和移动方式,它被抽象为一个
。因此,Recycler可以支持如上所示的传统布局管理器
,以及类似列表视图
的东西,但它不仅限于此,它还可以做更多的事情,但您必须进行编程脚部工作,使之发生)GridView
- 添加/删除的动画不是一个考虑过的用例。这完全取决于您如何解决(比较RecyclerView.Adapter classes notify*method Offices和ListView,了解它们)
RecyclerView
是对列表视图的一种更灵活的选择,尽管您可能需要进行更多的编码。主要优势:
默认情况下,ListView
中的ViewHolder
不可用。我们将在getView()中显式创建。
RecyclerView
内置了Viewholder
在我看来RecyclerView
是为了解决ListView中使用的回收模式的问题,因为它使开发人员的生活更加困难。
所有其他你能处理的或多或少。
例如,我对ListView
和GridView
使用了相同的适配器,但在这两个视图中,getView
,getItemCount
,getTypeCount
都是相同的。
如果带有ListAdapter
的ListView
或带有网格适配器的GridView
已经在为您工作,则不需要使用RecyclerView
。
如果您在列表视图中正确地实现了ViewHolder
模式,那么与RecycleView
相比,您不会看到任何大的改进。我认为它们的主要和最大区别在于ListView
在创建或放置项目时查找项目的位置,而另一方面RecycleView
查找项目的类型。如果使用
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
compile 'com.android.support:recyclerview-v7:27.0.0'