美文网首页
RecyclerView 源码分析

RecyclerView 源码分析

作者: 第一号伤心人 | 来源:发表于2018-03-25 17:20 被阅读11次

    Recycler:

            Recycler的职责是管理那些已经废弃了的或者从RecyclerView中分离的item view用于复用。Recycler典型的用法就是当LayoutManager去获取Adapter中的某一项View的时候,如果这个View失效了,则需要重新绑定View,当复用的View是有效的话,View就会被直接被复用。有效的View如果不主动调用requestLayout,那么该View不需要重新测量就可以被复用。

    Recycler几个成员变量

    RecycledViewPool:RecycledViewPool让开发者可以在多个RecyclerView之间共享View。如果你想要跨RecyclerView复用View,创建一个RecycledViewPool实例,然后调用setRecycledViewPool(RecycledViewPool)方法就可以了。RecyclerView会自动创建一个RecycledViewPool的实例。有了RecycledViewPool的存在,就能很大程度上减少View的创建,提高性能。

    mScrap是一个<viewType, List>的映射,mMaxScrap是一个<viewType, maxNum>的映射,我们可以调用setMaxRecycledViews方法来设置每种viewType的view容量。从源码可以看出,如果viewType类型的list的size大于制定的最大数字的话,会先从列表的末尾开始丢弃超出的部分。调用getRecycledView(int viewType)方法呢,可以将scrapHeap中的最后一项移除并返回viewType对应的List的末尾项。这里需要注意的是,因为是跨RecyclerView进行操作,所以要特别注意对于同一个RecycledViewPool,对ViewType的定义要统一,因为这里是根据viewType来取ViewHolder的。 

    ViewCacheExtension:

    相关文章

      网友评论

          本文标题:RecyclerView 源码分析

          本文链接:https://www.haomeiwen.com/subject/kktkcftx.html