ListView、GrideView通用适配器

来源:互联网 发布:苹果mac破解软件下载 编辑:程序博客网 时间:2024/05/19 04:51

1、baseAdapter

public abstract class BaseCommonAdapter<T> extends BaseAdapter {    protected LayoutInflater mInflater;    protected Context mContext;    protected List<T> mDatas;    public BaseCommonAdapter(Context context, List<T> list) {        this.mInflater = LayoutInflater.from(context);        this.mContext = context;        this.mDatas = list;    }    @Override    public int getCount() {        if(mDatas != null){            return mDatas.size();        }        return 0;    }    @Override    public Object getItem(int position) {        if(mDatas != null){            return mDatas.get(position);        }        return null;    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public abstract View getView(int position, View convertView, ViewGroup parent);}

2、ViewHolder使用于Adapter缓存

public class ViewHolder {    private SparseArray<View> mViews;    private int mPosition;    private View mConvertView;    public ViewHolder(Context context, ViewGroup parent, int layoutId,                      int position) {        mViews = new SparseArray<View>();        this.mPosition = position;        this.mConvertView = LayoutInflater.from(context).inflate(layoutId,parent, false);        mConvertView.setTag(this);    }    /**     * 得到一个ViewHolder对象     *      * @param context     * @param parent     * @param layoutId     * @return     */    public static ViewHolder get(Context context, View convertView,            ViewGroup parent, int layoutId, int position) {        if (convertView == null) {            return new ViewHolder(context, parent, layoutId, position);        } else {            ViewHolder holder = (ViewHolder) convertView.getTag();            holder.mPosition = position;            return holder;        }    }    /**     * 通过控件的Id获取对应的控件,如果没有则加入views     *      * @param viewId     * @return     */    public <T extends View> T getView(int viewId) {        View view = mViews.get(viewId);        if (view == null) {            view = mConvertView.findViewById(viewId);            mViews.put(viewId, view);        }        return (T) view;    }    public View getConvertView() {        return mConvertView;    }    /**     * 为TextView设置值     *      * @param viewId     * @param text     * @return     */    public ViewHolder setText(int viewId, String text) {        TextView tv = getView(viewId);        tv.setText(text);        return this;    }    /**     * 为TextView设置值     *      * @param viewId     * @return     */    public ViewHolder setTextColor(int viewId, int colorId){        TextView tv = getView(viewId);        tv.setTextColor(colorId);        return this;    }    /**     * 为ImageView 设置值     *      * @param viewId     * @param resId     * @return     */    public ViewHolder setImageResource(int viewId, int resId) {        ImageView iv = getView(viewId);        iv.setImageResource(resId);        return this;    }    /**     * 为TextView设置背景资源     *     * @param viewId     * @param resId     * @return     */    public ViewHolder setBackground(int viewId, int resId) {        TextView tv = getView(viewId);        tv.setBackgroundResource(resId);        return this;    }    /**     * 为ImageView设置值     *      * @param viewId     * @param bm     * @return     */    public ViewHolder setImageBitmap(int viewId, Bitmap bm) {        ImageView iv = getView(viewId);        iv.setImageBitmap(bm);        return this;    }    /**     * 获取项中的图片按钮     *      * @param viewId     * @return     */    public ImageView getImageView(int viewId) {        return getView(viewId);    }    /**     * 获取项中的按钮     *      * @param viewId     * @return     */    public Button getButton(int viewId) {        return getView(viewId);    }}

3、调用方法

public class MenuAdapter extends BaseCommonAdapter<Menu> {    public MenuAdapter(Context context, List<Menu> list) {        super(context, list);    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder = new ViewHolder(mContext, parent, R.layout.item_gv_menu, position);        holder.setText(R.id.item_gv_menu_text_tv, mDatas.get(position).getItem());        holder.setImageResource(R.id.item_gv_menu_text_iv, mDatas.get(position).getId());        return holder.getConvertView();    }}
原创粉丝点击