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
的過程如下圖:

6.一些常用到方法
方法 | 作用 |
---|---|
| 通知 進行全局重新整理 |
| 通知 在 處局進行部重新整理 |
| 通知 移除在 處的item |
| 通知 移除從 到 的 |
| 通知 移除從 開始的 個 |
| 通知 改變指定 的 的 |
| 通知 從 開始改變 個 |
| 通知 從 開始改變 個 的對象 |
| 通知 在 處插入一個 |
| 通知 從 開始插入 個 |