通用的ListViewAdapter

来源:互联网 发布:点点客工作 知乎 编辑:程序博客网 时间:2024/06/06 06:54

CommonAdapter.java

public abstract class CommonAdapter<T> extends BaseAdapter{    protected Context mContext;    protected LayoutInflater mInflater;    protected List<T> mDatas;    private int mLayoutId;    public CommonAdapter(Context context,int layoutId, List<T> datas) {        mContext = context;        mDatas = datas;        mLayoutId = layoutId;        mInflater = LayoutInflater.from(context);    }    @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) {        CommonViewHolder holder = CommonViewHolder.getInstance(mContext, convertView, parent, mLayoutId, position);        convert(holder,getItem(position),position);        return holder.getConvertView();    }    public abstract void convert(CommonViewHolder holder,T bean,int position);}

CommonViewHolder.java

public class CommonViewHolder {    private SparseArray<View> mViews;    private int mPosition;    private View mConvertView;    public static CommonViewHolder getInstance(Context context, View convertView, ViewGroup parent, int layoutId, int position) {        if (convertView == null) {            return new CommonViewHolder(context, parent, layoutId, position);        } else {            CommonViewHolder holder = (CommonViewHolder) convertView.getTag();            holder.mPosition = position;            return holder;        }    }    private CommonViewHolder(Context context, ViewGroup parent, int layoutId, int position) {        mPosition = position;        mViews = new SparseArray<View>();        mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false);        mConvertView.setTag(this);    }    public View getConvertView() {        return mConvertView;    }    public <T extends View> T getView(int viewId) {        View view = mViews.get(viewId);        if (null == view) {            view = mConvertView.findViewById(viewId);            mViews.put(viewId, view);        }        return (T) view;    }}

使用方法

mLv.setAdapter(new CommonAdapter<Integer>(this, R.layout.row_school_or_department_or_year, mYearList) {    @Override    public void convert(CommonViewHolder holder, Integer year, int position) {        // TODO Auto-generated method stub        ((TextView) holder.getView(R.id.id_name)).setText(year + "");    }});mLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {    @Override    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {    }});
0 0
原创粉丝点击