天天看點

安卓RecyclerView.AdapterRecyclerView.Adapter擴充卡

RecyclerView.Adapter擴充卡

RecyclerView.Adapter

,一個抽象類,并支援泛型

public static abstract class Adapter<VH extends ViewHolder> {
   ...
}
           

定義一個RecyclerAdapter繼承RecyclerView.Adapter後,這個類必須重寫三個方法,在重寫三個方法之前,一般先要定義一個BaseViewHolder繼承RecyclerView.ViewHolder,之後直接在RecyclerAdapter上指定泛型就是BaseViewHolder。

BaseViewHolder

public class BaseViewHolder extends RecyclerView.ViewHolder {
    public BaseViewHolder(View itemView) {
        super(itemView);
    }
}
           

3個需要必須重寫的方法:

方法1:public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)

方法2:public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)

方法3:public int getItemCount()
           

指定泛型為BaseViewHolder,方法2也會根據泛型改變為onBindeViewHolder(BaseViewHolder holder,int position)

1.onCreateViewHolder(ViewGroup parent, int viewType)建立Holder

  • ViewGroup parent:可以簡單了解為

    item

    的根

    ViewGroup

    item

    的子控件加載在其中
  • int viewType:

    item

    的類型,可以根據

    viewType

    來建立不同的

    ViewHolder

    ,來加載不同的類型的

    item

這個方法就是用來建立出一個新的

ViewHolder

,可以根據需求的

itemType

,建立出多個

ViewHolder

viewType是getItemViewType(int position)方法的傳回值      

2.onBindViewHolder(RecyclerHolder holder, int position)綁定ViewHolder

  • VH holder:就是在

    onCreateViewHolder()

    方法中,建立的

    ViewHolder

  • int position:

    item

    對應的

    dataBeanList

    資料源集合的

    postion

postion

就是

adapter position

RecycelrView

item

的數量,就是根據

dataBeanList

資料源集合的數量來建立的.

3. getItemCount()擷取Item的數目

這個方法的傳回值,便是

RecyclerView

中實際

item

的數量。有些情況下,當增加了

HeaderView

或者

FooterView

後,

需要注意考慮這個傳回值.

4 .getItemType(int position)擷取Item的類型

  • int position:

    item

    對應的

    dataBeanList

    資料源集合的

    postion

5.總結及流程

onCreateViewHolder()

 為每個項目建立 

ViewHolder

onBindViewHolder()

 處理每個 

item

getItemViewType()

 在 

onCreateViewHolder

 前調用,傳回 

item

 類型 

getItemCount()

 擷取 

item

 總數 

加載 

RecyclerView

 的過程如下圖:

安卓RecyclerView.AdapterRecyclerView.Adapter擴充卡

6.一些常用到方法

方法 作用

notifyDataSetChanged()

通知

RecycelrView

進行全局重新整理

notifyItemChanged(int position)

通知

RecycelrView

adapter position

處局進行部重新整理

notifyItemRemoved(int position)

通知

RecyclerView

移除在

adapter position

處的item

notifyItemMoved(int fromPosition, int toPosition)

通知

RecyclerView

移除從

fromPosition

toPosition

item

notifyItemRangeRemoved(int positionStart, int itemCount)

通知

RecyclerView

移除從

positionStart

開始的

itemCount

item

notifyItemChanged(int position, Object payload)

通知

RecyclerView

改變指定

position

item

object

notifyItemRangeChanged(int positionStart,int itemCount)

通知

RecyclerView

positionStart

開始改變

itemCount

item

notifyItemRangeChanged(int positionStart,int itemCount,Object payload)

通知

RecyclerView

positionStart

開始改變

itemCount

item

的對象

notifyItemInserted(int position)

通知

RecyclerView

position

處插入一個

item

notifyItemRangeInserted(int positionStart, int itemCount)

通知

RecyclerView

positionStart

開始插入

itemCount

item