RecyclerView万能适配器

1:首先创建 ViewHolder 来存放 view
public class BaseViewHolder extends RecyclerView.ViewHolder {
//定义一 数组,存放view。
private SparseArray views = new SparseArray<>();

public BaseViewHolder(@NonNull View itemView) {
    super(itemView);
}
public <T extends View> T getView(int id) {
    //如果没有存储,通过itemView 的findViewById 拿到相应的控件。
    View view;
    view = views.get(id);
    if (view == null) {
        view = itemView.findViewById(id);
        if (view != null) {
            views.put(id, view);//存储起来.可以提高性能.
        }
    }
    return (T) view;
}

}

2 写一个适配器 继承上面的 Baseviewholder

//抽象类.需要子类实现两个抽象方法。一个是用来生成view,另一个是用来渲染view。
public abstract class BaseAdapter extends RecyclerView.Adapter {
public List data = new ArrayList<>();

public void refreshData(List<T> dataList) {
    data.clear();
    data.addAll(dataList);
    notifyDataSetChanged();
}

public T getData(int position) {
    return data.get(position);
}

//获取相应的layout文件。
public abstract int getLayoutId();

@NonNull
@Override
public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
    View rootView = inflater.inflate(getLayoutId(), viewGroup, false);
    return new BaseViewHolder(rootView);
}

@Override
public void onBindViewHolder(@NonNull BaseViewHolder baseViewHolder, int i) {
    convert(baseViewHolder, i);
}

//显示数据在相应layout对应生成view上。
public abstract void convert(BaseViewHolder baseViewHolder, int position);

@Override
public int getItemCount() {
    return data.size();
}

}
这样 我们的适配器就这样完成了

以下是我自己的适配器(演示)
public class MyAdpter extends BaseAdapter<这里是bean类> {
@Override
public int getLayoutId() {
return R.layout.rv_item_layout_three;
}
@Override
public void convert(BaseViewHolder baseViewHolder, int position) {

     baseViewHolder.getView(R.id.xxx); //获取控件
     getDate(position)  // 可以获取 bean的数据
   
}

}

最后 在Activity 在 实现 adapter调用
MyAdpter adp = new MyAdpter()
adp. refreshData(获取数据)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值