RecycleView的一个基类适配器
public abstract class CommonNewAdapter<T> extends RecyclerView.Adapter {
private List<T> datas;
private Context context;
private int itemlayoutid;
private OnItemViewClickListener onItemViewClickListener;
public interface OnItemViewClickListener {
//设置item中某个view的点击事件
void onItemViewClick(NormalHolder view, int position, Context context);
}
public void setonItemViewClickListener(OnItemViewClickListener listener) {
this.onItemViewClickListener = listener;
}
public CommonNewAdapter(List<T> list, Context c, int itemlayoutid) {
this.datas = list;
this.context = c;
this.itemlayoutid = itemlayoutid;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(context).inflate(itemlayoutid, parent, false);
return new NormalHolder(itemView);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (onItemViewClickListener != null) {
onItemViewClickListener.onItemViewClick((NormalHolder) holder, position, context);
}
bindConvert((NormalHolder) holder, position, datas.get(position), context);
}
@Override
public int getItemCount() {
return datas.size();
}
public void setDataList(List<T> list) {
this.datas = list;
notifyDataSetChanged();
}
public abstract void bindConvert(NormalHolder holder, int position, T item, Context content);
}
public class NormalHolder extends RecyclerView.ViewHolder {
private SparseArray arrayView;
public NormalHolder(View itemView) {
super(itemView);
arrayView = new SparseArray<>();
}
/**
* 通过填写的itemId来获取具体的View的对象
*
* @param itemId R.id.***
* @param <T> 必须是View的子类
* @return
*/
public <T extends View> T getView(int itemId) {
//arrayVie类似于Map容器,get(key)取出的是value值
View mView = arrayView.get(itemId);
if (mView == null) {
//实例化具体的View类型
mView = itemView.findViewById(itemId);
arrayView.put(itemId, mView);
}
return (T) mView;
}
/**
* 设置TextView的内容
*
* @param itemId
* @param text
*/
public void setText(int itemId, String text) {
TextView tv = getView(itemId);
tv.setText(text);
}
/**
* 设置图片
*
* @param itemId
* @param imageId
*/
public void setBitmapImage(int itemId, int imageId) {
ImageView iv = getView(itemId);
iv.setImageResource(imageId);
}
/**
* 设置Button的内容
*
* @param itemId
* @param color
*/
public void setTextColor(int itemId, int color, Context context) {
Button tv = getView(itemId);
tv.setTextColor(context.getResources().getColorStateList(color));
}
/**
* 设置Button的内容
*
* @param itemId
* @param size
*/
public void setTextsize(int itemId, int size) {
Button tv = getView(itemId);
tv.setTextSize(size);
}
}
`