封装RecycleView的 RecyclerView.Adapter的方式

目录

 

 

一、BaseQuickAdapter的写法

1.1 用法:

二、BaseViewHolder的写法


 

一、BaseQuickAdapter的写法

public abstract class BaseQuickAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> {


  public BaseQuickAdapter(Context context, int layoutResID, List<T> data) {
        mContext = context;
        this.mLayoutResID = layoutResID;
        this.data = data;
    }

    @Override
    public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        final BaseViewHolder holder;
        final View itemView = LayoutInflater.from(mContext).inflate(mLayoutResID, parent, false);
        holder = new BaseViewHolder(itemView);
        return holder;
    }

    @Override
    public void onBindViewHolder(BaseViewHolder holder, int position) {
        convert(holder, mData.get(position));
    }

     abstract void  convert(BaseViewHolder holder, T item);

}

1.1 用法:

在自己的Adapter中放置布局,以后只需要实现convert抽象方法即可;

public class MovieQuickAdapter extends BaseQuickAdapter<MovieEntity.SubjectsBean> {
    private Context mContext;

    public MovieQuickAdapter(Context context, List<MovieEntity.SubjectsBean> data) {
        super(context, R.layout.rcv_item, data);
        mContext = context;
    }

    @Override
    protected void convert(BaseViewHolder holder, MovieEntity.SubjectsBean item) {
        //set TextView
        holder.setText(R.id.title, "片名:" + item.getTitle())
                .setText(R.id.score, "评分:" + item.getRating().getAverage())
                .setText(R.id.director, "导演:" + item.getDirectors().get(0).getName())
                .setText(R.id.actor, "主演:" + item.getCasts().get(0).getName())
                .setText(R.id.type, "类型:" + item.getGenres().toString())
                .setText(R.id.year, "年份:" + item.getYear())
                .setText(R.id.tv_num, holder.getLayoutPosition() + "");
        //setImageView
        Glide.with(mContext).load(item.getImages().getMedium()).into((ImageView) holder.getView(R.id.iv));
    }
}

二、BaseViewHolder的写法

 

public class BaseViewHolder extends RecyclerView.ViewHolder {

    private final SparseArray<View> views;
    private View convertView;


    public BaseViewHolder(View itemView) {
        super(itemView);
        this.views = new SparseArray<>();
        convertView = itemView;
    }

    //根据id检索获得该View对象
    private <T extends View> T retrieveView(int viewId) {
        View view = views.get(viewId);
        if (view == null) {
            view = convertView.findViewById(viewId);
            views.put(viewId, view);
        }
        return (T) view;
    }

    public BaseViewHolder setText(int viewId, CharSequence charSequence) {
        TextView textView = retrieveView(viewId);
        textView.setText(charSequence);
        return this;
    }

    public View getView(int viewId) {
        return retrieveView(viewId);
    }

}

代码下载路径:

https://github.com/yuboxiao/CodeUtils

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值