ListView的万能适配器

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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36699930/article/details/80400600