RecyclerView小记

本文详细探讨了RecyclerView与ListView的区别,包括继承结构、Adapter实现、缓存机制、刷新方式和功能扩展。重点讲解了RecyclerView的强大缓存和动画特性,以及两者优缺点对比,适合进一步了解RecyclerView的开发者阅读。
摘要由CSDN通过智能技术生成

        RecyclerView使用和封装过很多次了。但从来没有去认真研究过源码,一是没时间,二是后面的工作原因,不怎么接触到。

        今天来简单整理下。

        RecyclerView可以说是ListView替代品了,就是因为他能做到的,ListView做不到,ListView有的,他都有。

简单记

ListView和RecyclerView的区别,还是很大的。

第一,直接父类的不同,RecyclerView直接继承ViewGroup。

1、ListView extends AbsListView ... extends AdapterView ... extends ViewGroup

2、RecyclerView extends ViewGroup

第二,Adapter大不同

1、ListView使用的是继承Adapter接口的适配器,自己实现重用逻辑;

2、RecyclerView继承的是内部类Adapter<VH extends ViewHolder>,他已经帮我们ViewHolder类来协助我们完成Item绘制

第三、缓存小不同

1、ListView有三级缓存

       RecycleBin中含有

        屏幕中活动的mActionView(数组)、

        超出屏幕废弃的mScrapViews(ArrayList集合)、

        保存特殊状态的缓存mTransientStateViews(SparseArray稀疏数组)这三级缓存

2、RecyclerView有四级缓存

         Recycler是RecyclerView封装的回收机制类,里面包含

        用于屏幕内快速重用的mAttachedScrap、

        超出屏幕外的缓存mCachedViews(默认上限是2个)、

        用户自定义的一个缓存对象mViewCacheExtension、

        默认最大上限为5个的mRecyclerPool(这个很特殊,大家可以去找相关的资料看看)。

第四、刷新大不同

1、ListView直接通过invalidate、postInvalidate、requestLayout三种刷新整个界面

2、RecyclerView可以使用invalidate刷新整个,也可以刷新某一个item,并且按照不同的动作来刷新,比如notifyItemChanged、notifyItemInserted、notifyItemMoved等刷新方式。

 第五、实现的功能不同

1、ListView只能上下排列Item

2、RecyclerView可以是GridView那样的九宫格、可以横竖排列、也可以是流行的瀑布流

        LinearLayoutManager(横竖排列)、

        GridLayoutManager(九宫格)、

        StaggeredGridLayoutManager(瀑布流)

第六、动画

1、ListView需要自己写动画

2、RecyclerView自带了就有。 

 以上的对比,就是为了体现RecyclerView的强大。没别的意思,ListView别伤心。

ListView比较RecyclerView不是一点优点也没的。

1、ListView优点:

        a、设置分割线方便;

        b、ListView实现添加HeaderView和FooderView有直接的方法;

        c、ListView实现onItemClickListence和onItemLongClickListence有直接的方法

2、RecyclerView的有点

        a.封装了ViewHodler,效率更高

        b.可以添加增删Item动画、侧滑功能等

        c.支持局部更新,可见才更新,不可见不更新

        d.插件式实现,各个功能模块化,解耦性强,使用起来更方便

 其实ListView的优点,RecyclerView也是可以封装的嘛!

进阶记

        RecyclerView值得一提的就是他强大的缓存机制了。

        发现了一个非常详细的文章了,直接盗用了。

        https://blog.csdn.net/qq_21118431/article/details/106102184

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值