Bla*_*ama 271 android listview android-recyclerview
来自android开发人员(创建列表和卡片):
RecyclerView小部件是ListView的更高级和灵活的版本.
好吧,这听起来很酷,但是当我看到这个示例图片时,我对两者之间的区别感到非常困惑.

ListView使用自定义适配器可以轻松创建上面的图片.
那么,在什么情况下应该使用RecyclerView?
dan*_*ela 356
RecyclerView是作为ListView改进创建的,所以是的,您可以使用ListView控件创建附加列表,但使用RecyclerView更容易:
在向上/向下滚动时重用单元格 - 这可以通过在listView适配器中实现View Holder来实现,但它是可选的,而在RecycleView中它是编写适配器的默认方式.
将列表与其容器分离 - 因此您可以使用设置LayoutManager在运行时轻松地将列表项放在不同的容器(linearLayout,gridLayout)中.
例:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
Run Code Online (Sandbox Code Playgroud)
有关RecyclerView的更多信息,但我认为这些是主要的.
因此,总而言之,RecyclerView是一种更灵活的控制,用于处理"列表数据",遵循关注委托模式,并为自己留下一个任务 - 回收项目.
Cap*_*ect 36
对于具有良好性能的列表视图,您需要实现持有者模式,这很容易搞乱,特别是当您想要使用几种不同类型的视图填充列表时.
RecyclerView将这种模式融入其中,使其变得更加困难.它也更灵活,可以更轻松地处理不同的线性布局,如网格.
Jim*_*aca 34
ListView是的祖先RecyclerView.有许多事情ListView要么没有做,要么做得不好.如果你要收集问题的缺点ListView并通过将问题抽象到不同的域来解决问题,那么你最终会得到像回收者视图这样的东西.以下是ListViews的主要问题点:
没有强制View重用相同的项目类型(查看一个在a中使用的适配器ListView,如果你学习getView方法,你会发现没有什么能阻止程序员为每一行创建一个新视图,即使传入一个通过convertView变量)
未避免代价高昂的findViewById用途(即使你被回收的意见,指出上面有可能对开发者进行调用findViewById,以更新的子视图显示的内容.在的主要目的ViewHolder图案ListViews是缓存findViewById的电话.然而,这只是如果您知道它可用,因为它根本不是平台的一部分)
仅支持带有行显示视图的垂直滚动(Recycler视图不关心视图放置的位置以及它们的移动方式,它被抽象为a LayoutManager.因此,Recycler可以支持传统,ListView如上所示,以及类似的东西GridView,但是它不仅限于此,它可以做更多,但你必须做编程脚工作才能实现它).
添加/删除的动画不是考虑的用例.完全取决于你如何解决这个问题(比较RecyclerView.适配器类通知*方法产品v.ListViews以获得一个想法).
简而言之,虽然可能需要对您进行更多编码,但RecyclerView更灵活ListView一点.
Int*_*iya 20
这
RecyclerView是一个新的ViewGroup,它准备以类似的方式呈现任何基于适配器的视图.它被认为是继承者ListView and GridView,它可以在中找到latest support-v7 version.它的RecyclerView开发具有可扩展性,因此可以创建您能想到的任何类型的布局,但不能没有一点点痛苦的剂量.
答案取自Antonio leiva
compile 'com.android.support:recyclerview-v7:27.0.0'
Run Code Online (Sandbox Code Playgroud)
RecyclerView确实是一个powerful view比ListView.有关详细信息,请访问此页面.
Paw*_*ari 17
以下是RecyclerView和ListView之间的几个关键点/差异.明智地接听电话.
如果ListView适合您,则没有理由进行迁移.如果您正在编写新的UI,那么使用RecyclerView可能会更好.
RecylerView内置了ViewHolder,不需要在listView中实现我们自己的类似.它也支持特定索引的通知
动画添加或删除项目的内容已在RecyclerView中实现,无需您执行任何操作
我们可以将布局管理器与RecyclerView相关联,这可以用于获取recycleview中的随机视图,而这是ListView中的限制.在ListView中,唯一可用的视图类型是垂直ListView.甚至没有官方的方法来实现水平ListView.现在使用RecyclerView,我们可以拥有一个
i)LinearLayoutManager - 支持垂直和水平列表,ii)StaggeredLayoutManager - 支持交错列表等Pinterest,iii)GridLayoutManager - 支持显示在Gallery应用程序中看到的网格.
最棒的是我们可以根据需要动态完成所有这些操作.
RecyclerView 相对于 listview 的优点:
默认包含 ViewHolder。
简单的动画。
支持水平、网格和交错布局
listView 优于 recyclerView 的优点:
易于添加分隔线。
可以将内置的 arrayAdapter 用于简单的普通列表
支持页眉和页脚。
支持 OnItemClickListner 。
我认为他们的主要和最大的区别是ListView在创建或放置项目时查找项目的位置,另一方面RecyclerView查找项目的类型。如果使用相同类型创建了另一个项目,RecyclerView则不会再次创建它。它首先询问适配器,然后询问回收池,如果回收池说“是的,我已经创建了一个类似于它的类型”,则RecyclerView不会尝试创建相同的类型。ListView没有这种池化机制。
回收商查看信息
\n\n是RecyclerView与 一起引入的Android 5.0 (Lollipop)。它包含在支持库中。因此,它与 Android API Level 7 兼容。
与 类似ListView,RecyclerView\xe2\x80\x99s主要思想是以性能友好的方式提供列表功能。此视图\xe2\x80\x99s 名称的\xe2\x80\x98Recycler\xe2\x80\x99 部分并非巧合。实际上可以回收它RecyclerView当前使用的\xe2\x80\x99s 项目。回收过程是通过称为View Holder 的模式完成的。
RecyclerView 的优点和缺点
\n\n优点:
\n\n缺点:
\n\n列表查看信息
\n\nListView自 Android 诞生之初就已存在。它甚至可以在 中使用,API Level 1并且与RecyclerView.
ListView的使用其实非常简单。在这方面,它\xe2\x80\x99不像它的后继者。学习曲线比 RecyclerView 更平滑。因此,更容易掌握。我们不需要处理诸如 LayoutManager、ItemAnimator 或 DiffUtil 之类的事情。
\n\nListView 的优点和缺点
\n\n优点:
\n\nExpandableListView缺点:
\n\n除了上述差异外,还有以下几点:
RV 将视图创建和数据绑定到视图分开。在 LV 中,您需要在将数据绑定到它之前检查 convertView 是否为 null 以创建视图。因此,在 RV 的情况下,只会在需要时创建视图,但在 LV 的情况下,您可能会错过对 convertview 的检查,并且每次都会创建视图。
现在使用 LayoutManager 在 Grid 和 List 之间切换更加容易。
无需通知和更新所有项目,即使仅更改单个项目。
在 LV 的情况下,必须实现视图缓存。默认情况下,它在 RV 中提供。(视图缓存和回收之间存在差异。)
在 RV 的情况下非常简单的项目动画。
| 归档时间: |
|
| 查看次数: |
174085 次 |
| 最近记录: |