CommomAdapter:
public abstract class CommomAdapter<T> extends BaseAdapter {
private Context mContext;
private List<T> mDataList;
private int mResID;
@Override
public int getCount() {
return mDataList == null ? 0 : mDataList.size();
}
@Override
public T getItem(int position) {
return mDataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CommomViewHolder holder = CommomViewHolder.getHolder(mContext, convertView, mResID);
fillData(position, holder);
return holder.getConvertView();
}
public abstract void fillData(int position, CommomViewHolder holder);
}
CommomViewHolder:
public class CommomViewHolder {
private final View mContentView;
//Android开发中官方推荐:当使用HashMap(K, V),如果K为整数类型时,使用SparseArray的效率更高
private SparseArray<View> mSparseArray = new SparseArray<>();
private Context mContext;
public CommomViewHolder(Context context, int resID) {
mContext = context;
mContentView = LayoutInflater.from(context).inflate(resID, null);
mContentView.setTag(this);
}
public View getContentView() {
return mContentView;
}
public static CommomViewHolder getHolder(Context context, View convertView, int resID) {
CommomViewHolder holder = null;
if (holder == null) {
holder = new CommomViewHolder(context, resID);
} else {
holder = (CommomViewHolder) convertView.getTag();
}
return holder;
}
/**
* 通过控件的Id获取对于的控件,如果没有则加入mSparseArray
*
* @param id
* @param <T>
* @return
*/
public <T extends View> T getView(int id) {
View view = mSparseArray.get(id);
if (view == null) {
view = mContentView.findViewById(id);
mSparseArray.append(id, view);
}
return (T) view;
}
/**
* 为TextView设置字符串
*
* @param id
* @param text
* @return
*/
public CommomViewHolder setText(int id, String text) {
TextView view = getView(id);
view.setText(text);
return this;
}
/**
* 设置TextView颜色
*
* @param id
* @return
*/
public CommomViewHolder setTextColor(int id, String color) {
TextView view = getView(id);
view.setTextColor(Color.parseColor(color));
return this;
}
public CommomViewHolder setImageByUrl(int id, String url) {
ImageView view = getView(id);
Glide.with(mContext).load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.mipmap.ic_launcher)
.placeholder(R.mipmap.ic_launcher)
.into(view);
return this;
}
public CommomViewHolder setImageResource(int id, int resId) {
ImageView view = getView(id);
view.setImageResource(resId);
return this;
}
public CommomViewHolder setImageBitmap(int id, Bitmap bitmap) {
ImageView view = getView(id);
view.setImageBitmap(bitmap);
return this;
}
}