安卓RecyclerView.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的根ViewGroupitem的子控件加载在其中
  • int viewTypeitem的类型,可以根据viewType来创建不同的ViewHolder,来加载不同的类型的item
这个方法就是用来创建出一个新的 ViewHolder ,可以根据需求的 itemType ,创建出多个 ViewHolder
viewType是getItemViewType(int position)方法的返回值


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

  • VH holder:就是在onCreateViewHolder()方法中,创建的ViewHolder
  • int positionitem对应的dataBeanList数据源集合的postion

postion就是adapter positionRecycelrViewitem的数量,就是根据dataBeanList数据源集合的数量来创建的.


3. getItemCount()获取Item的数目

这个方法的返回值,便是RecyclerView中实际item的数量。有些情况下,当增加了HeaderView或者FooterView后,

需要注意考虑这个返回值.


4 .getItemType(int position)获取Item的类型

  • int positionitem对应的dataBeanList数据源集合的postion


5.总结及流程

onCreateViewHolder() 为每个项目创建 ViewHolder 
onBindViewHolder() 处理每个 item 
getItemViewType() 在 onCreateViewHolder 前调用,返回 item 类型 
getItemCount() 获取 item 总数 

加载 RecyclerView 的过程如下图:



6.一些常用到方法

方法作用
notifyDataSetChanged()通知RecycelrView进行全局刷新
notifyItemChanged(int position)通知RecycelrViewadapter position处局进行部刷新
notifyItemRemoved(int position)通知RecyclerView移除在adapter position处的item
notifyItemMoved(int fromPosition, int toPosition)通知RecyclerView移除从fromPositiontoPositionitem
notifyItemRangeRemoved(int positionStart, int itemCount)通知RecyclerView移除从positionStart开始的itemCountitem
notifyItemChanged(int position, Object payload)通知RecyclerView改变指定positionitemobject
notifyItemRangeChanged(int positionStart,int itemCount)通知RecyclerViewpositionStart开始改变itemCountitem
notifyItemRangeChanged(int positionStart,int itemCount,Object payload)通知RecyclerViewpositionStart开始改变itemCountitem的对象
notifyItemInserted(int position)通知RecyclerViewposition处插入一个item
notifyItemRangeInserted(int positionStart, int itemCount)通知RecyclerViewpositionStart开始插入itemCountitem






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值