ListView 通用适配器

来源:互联网 发布:hadoop 处理数据 编辑:程序博客网 时间:2024/05/20 23:38
public abstract class CommonAdapter<T> extends BaseAdapter {    protected LayoutInflater mInflater;    protected Context mContext;    protected List<T> mDatas;    protected final int mItemLayoutId;    public CommonAdapter(Context context,int itemLayoutId, List<T> mDatas ) {        this.mContext = context;        this.mInflater = LayoutInflater.from(mContext);        this.mDatas = mDatas;        this.mItemLayoutId = itemLayoutId;    }    @Override    public int getCount()    {        return mDatas.size();    }    @Override    public T getItem(int position)    {        return mDatas.get(position);    }    @Override    public long getItemId(int position) {return position;}    @Override    public View getView(int position, View convertView, ViewGroup parent) {        final ViewHolder viewHolder = getViewHolder(position, convertView,parent);        convert(viewHolder, getItem(position));        return viewHolder.getConvertView();    }    public abstract void convert(ViewHolder helper, T item);    private ViewHolder getViewHolder(int position, View convertView, ViewGroup parent) {        return ViewHolder.get(mContext, convertView, parent, mItemLayoutId,                position);    }    /**     * 内部类     */    public static class ViewHolder  {        private final SparseArray<View> mViews;        private int mPosition;        private View mConvertView;        private ViewHolder(Context context, ViewGroup parent, int layoutId, int position) {            this.mPosition = position;            this.mViews = new SparseArray<View>();            mConvertView = LayoutInflater.from(context).inflate(layoutId, parent,false);            mConvertView.setTag(this);        }        /**         * 拿到一个ViewHolder对象         */        public static ViewHolder get(Context context, View convertView, ViewGroup parent, int layoutId, int position){            if (convertView == null) {                return new ViewHolder(context, parent, layoutId, position);            }            return (ViewHolder) convertView.getTag();        }        public View getConvertView()        {            return mConvertView;        }        /**         * 通过控件的Id获取对于的控件,如果没有则加入views         */        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;        }        /**         * 为TextView设置字符串         */        public ViewHolder setText(int viewId, String text)        {            TextView view = getView(viewId);            view.setText(text);            return this;        }        /**         * 为ImageView设置图片         */        public ViewHolder setImageResource(int viewId, int drawableId) {            ImageView view = getView(viewId);            view.setImageResource(drawableId);            return this;        }        /**         * 为ImageView设置图片         */        public ViewHolder setImageBitmap(int viewId, Bitmap bm)        {            ImageView view = getView(viewId);            view.setImageBitmap(bm);            return this;        }        /**         * 为ImageView设置图片         */        public ViewHolder setImageByUrl(int viewId, String url) {            // ImageLoader.getInstance(3, Type.LIFO).loadImage(url, (ImageView) getView(viewId));            // Glide.with(context).load(url).into(view);            return this;        }        public int getPosition()        {            return mPosition;        }    }}
//使用方法
datas=List<Student> 集合数据类型

CommonAdapter mAdapter = new CommonAdapter<Student>(CardListActivity.this,        R.layout.item_card, datas) {    @Override    public void convert(ViewHolder helper, Student item) {        helper.setText(R.id.name, item.getName());        helper.setText(R.id.address, item.getAddress());    }}; mylistView.setAdapter(mAdapter);

阅读全文
0 0
原创粉丝点击