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 |
| 通知 移除从 到 的 |
| 通知 移除从 开始的 个 |
| 通知 改变指定 的 的 |
| 通知 从 开始改变 个 |
| 通知 从 开始改变 个 的对象 |
| 通知 在 处插入一个 |
| 通知 从 开始插入 个 |