Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Recyclerview与带Viewholder的ListView_Android_Performance_Listview_Android Recyclerview - Fatal编程技术网

Android Recyclerview与带Viewholder的ListView

Android Recyclerview与带Viewholder的ListView,android,performance,listview,android-recyclerview,Android,Performance,Listview,Android Recyclerview,我最近遇到了androidRecyclerView,它是随android 5.0发布的,似乎RecyclerView只是一个封装的传统ListView,其中包含了ViewHolder模式,它促进了视图的重用,而不是每次都创建视图 使用RecyclerView还有哪些好处? 如果两者在性能方面具有相同的效果,为什么会选择RecyclerView` 编辑 我发现人们也问过类似的问题,但答案并不是决定性的,所以把它们加在这里是为了记录在案 使用RecycleView的另一个优点是动画,它可以在两行

我最近遇到了android
RecyclerView
,它是随android 5.0发布的,似乎
RecyclerView
只是一个封装的传统
ListView
,其中包含了ViewHolder模式,它促进了视图的重用,而不是每次都创建视图

使用
RecyclerView
还有哪些好处? 如果两者在性能方面具有相同的效果,为什么会选择RecyclerView`

编辑

我发现人们也问过类似的问题,但答案并不是决定性的,所以把它们加在这里是为了记录在案


使用
RecycleView
的另一个优点是动画,它可以在两行代码中完成

RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
        recyclerView.setItemAnimator(itemAnimator);

但是小部件仍然是原始的,例如您不能创建页眉和页脚使用
RecycleView
的另一个优点是动画,它可以通过两行代码完成

RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
        recyclerView.setItemAnimator(itemAnimator);

但是这个小部件仍然是原始的,例如你不能创建页眉页脚

好吧,只需一点点挖掘,我就在
回收视图上从Bill Philips那里找到了这些宝石

RecyclerView可以做的不仅仅是ListView,但是RecyclerView类 它本身的职责比ListView少。开箱即用, RecyclerView不:

  • 在屏幕上定位项目
  • 设置视图动画
  • 处理除滚动之外的任何触摸事件
所有这些东西都被放到ListView中,但RecyclerView使用 协作者类来执行这些工作

您创建的视图持有者也更强大。它们是子类
RecyclerView.ViewHolder
,它有一系列方法
RecyclerView
使用<代码>视图持有者
知道他们当前绑定到的位置,如 以及哪些项目ID(如果有)。在此过程中,
ViewHolder
他被封为爵士。过去ListView的工作是保持 整个项目视图,而
视图保持架
仅保留其中的一小部分

现在,ViewHolder在
ViewHolder.itemView
字段,该字段在ViewHolder的构造函数中为您指定


好的,经过一点挖掘,我在<代码>RecycleView

RecyclerView可以做的不仅仅是ListView,但是RecyclerView类 它本身的职责比ListView少。开箱即用, RecyclerView不:

  • 在屏幕上定位项目
  • 设置视图动画
  • 处理除滚动之外的任何触摸事件
所有这些东西都被放到ListView中,但RecyclerView使用 协作者类来执行这些工作

您创建的视图持有者也更强大。它们是子类
RecyclerView.ViewHolder
,它有一系列方法
RecyclerView
使用<代码>视图持有者知道他们当前绑定到的位置,如 以及哪些项目ID(如果有)。在此过程中,
ViewHolder
他被封为爵士。过去ListView的工作是保持 整个项目视图,而
视图保持架
仅保留其中的一小部分

现在,ViewHolder在
ViewHolder.itemView
字段,该字段在ViewHolder的构造函数中为您指定

更多来自文章(去读吧!),但我认为指出以下几点很重要

在ListView中,关于如何处理单击事件存在一些模糊性:单个视图应该处理这些事件,还是ListView应该通过Listener处理它们?不过,在RecyclerView中,ViewHolder可以作为行级控制器对象来处理这些详细信息

我们在前面看到,LayoutManager处理定位视图,ItemAnimator处理设置视图动画。ViewHolder是最后一块:它负责处理RecyclerView显示的特定项目上发生的任何事件

更多来自文章(去读吧!),但我认为指出以下几点很重要

在ListView中,关于如何处理单击事件存在一些模糊性:单个视图应该处理这些事件,还是ListView应该通过Listener处理它们?不过,在RecyclerView中,ViewHolder可以作为行级控制器对象来处理这些详细信息

我们在前面看到,LayoutManager处理定位视图,ItemAnimator处理设置视图动画。ViewHolder是最后一块:它负责处理RecyclerView显示的特定项目上发生的任何事件


我使用了一个带有滑动图像加载器的
ListView
,内存在增长。然后我将
列表视图
替换为
回收视图
。它不仅在编码上更加困难,而且比
列表视图
占用更多内存。至少,在我的项目中


在另一个活动中,我使用了带有
EditText的
的复杂列表。在某些情况下,输入方法可能会有所不同,也可以应用
TextWatcher
。如果我使用了
ViewHolder
,如何在滚动期间替换
TextWatcher
?因此,我使用了一个没有视图支架的
列表视图
,它可以工作。

我使用了一个带有滑动图像加载程序的
列表视图
,内存增长。然后我将
列表视图
替换为
回收视图
。它不仅在编码上更加困难,而且比
列表视图
占用更多内存。至少,在我的项目中

在另一个活动中,我使用了带有
EditText的
的复杂列表。在某些情况下,输入方法可能会有所不同,也可以应用
TextWatcher
。如果我用