目录
一、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);
}
}
代码下载路径: