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,这一点大家一定要记住。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值