栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android必备回顾:10、ListView和RecyclerView有什么区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android必备回顾:10、ListView和RecyclerView有什么区别

这节给大家带来的是ListView 和 RecyclerView 有什么区别?我们可以来看一下,它总共有以下几点区别。

首先我们的 ListView 的话,它是只能在垂直方向进行一个滑动。
然后我们的 RecyclreView 除了可以在垂直方向还可以水平,甚至还可以不分流等等形式。

再一个就是我们的ListView,它有几个帮我们默认的adapter,如上图ArrayAdapter等三个,
而我们的 RecyclerView 它是 Adapter 需要自定义的。

然后我们的ListView的话,会有我们的这个事件监听的实现,
而 RecyclerView 在这个点击事件这一块的话,实现起来还是比较麻烦的啊。

然后再就是我们的 ListView 并不强制使用 ViewHolder,当然我们在平时使用的时候,还是一般建议使用 ViewHolder 的。
因为如果不使用 ViewHolder 的话,性能上面还是会比较差,而我们的 RecyclerView 的话。
它是直接帮我们实现了 ViewHolder 的,并且是必须使用 ViewHolder 的。
 
最后一点就是我们的这个缓存,那 ListView 的话它是一个两级缓存。
而 RecyclerView 它是四级缓存,我们可以来具体看一下它的这个缓存机制。 

 我们 ListView 的话,它的 两级缓存 主要是第一个是我们的 mActiveViews。这个的话主要是用于屏幕内的一个 itemView 的快速重用 。
第二个就是我们的 mScrapViews 这个的话就是用于离开屏幕的itemView 的一个缓存。

而我们的 RecyclerView 的话,它有四级缓存。第一点就是我们。
mChangeScrap和我们的mAttachedScrap,这个的话是和我们的 ListView 第一级一样的,也是用于屏幕类的一个 itemView 的快速重用。

那么第二个是我们的mCachedViews,它是默认的这个内存缓存大小是2,那么就是说可以缓存两个屏幕外的一个itemView。
我们的第三个缓存的话就是mViewCacheExtension,那么这一个的话主要是用户自定义一个这样的缓存机制,当然这个实际上我们平时在开发项目的时候,一般都用不到。
第四个的话,就是我们的 RecycledViewPool,也就是我们的缓存值,这一个的话默认大小是5,它也是一个缓存屏幕外的。

所以说实际上虽然我们的 RecyclerView 四级缓存,实际上只是在 ListView 的两极缓存上,进行了一个优化。
那么在这儿我们的第2级和第4级,实际上实现的功能,和我们的 ListView 的第2级是一样的,都是用于缓存屏幕外的。

而我们的 RecyclerView 的第一个和我们的这个 ListView 的第一个也是一样的。
所以说 RecyclerView 在缓存机制上面会稍微比 ListView 性能要好一点。

再一个就是我们的缓存对象,我们的缓存对象上面的话。
RecyclerView 它缓存的是 ViewHolder,而我们的 ListView 缓存的是View,这一点大家一定要记住。


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号