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

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

Android必备回顾:10、ListView和RecyclerView有什么区别_第1张图片

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

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

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

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

Android必备回顾:10、ListView和RecyclerView有什么区别_第2张图片

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


 

你可能感兴趣的:(Android核心点复习,android,android,studio,java)