Android Listview通用适配器BaseCommAdapter

来源:互联网 发布:画苯环的软件 编辑:程序博客网 时间:2024/05/20 20:58
public abstract class BaseCommAdapter<T> extends BaseAdapter {    private List<T> mDatas;    public BaseCommAdapter(List<T> datas) {        mDatas = datas;    }    @Override    public int getCount() {        return mDatas == null ? 0 : 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) {        ViewHolder holder = ViewHolder                .newsInstance(convertView, parent.getContext(), getLayoutId());        setUI(holder, position, parent.getContext());        return holder.getConverView();    }    /**     * 设置UI     *     * @param holder     * @param position     * @param context     * @author 漆可     * @date 2016-6-28 下午4:07:23     */    protected abstract void setUI(ViewHolder holder, int position, Context context);    /**     * 获取适配器的布局id     *     * @return     * @author 漆可     * @date 2016-6-28 下午3:12:52     */    protected abstract int getLayoutId();

}

public class ViewHolder {    private SparseArray<View> mViews;    private View mConvertView;    private ViewHolder(Context context, int layoutId)    {        mConvertView = View.inflate(context, layoutId, null);        mConvertView.setTag(this);        mViews = new SparseArray<>();    }    public static ViewHolder newsInstance(View convertView, Context context, int layoutId)    {        if (convertView == null)        {            return new ViewHolder(context, layoutId);        } else        {            return (ViewHolder) convertView.getTag();        }    }    /**     * 获取根目录的view     * @author 漆可     * @date 2016-6-28 下午3:29:21     * @return     */    public View getConverView()    {        return mConvertView;    }    /**     * 获取itemView     * @author 漆可     * @date 2016-6-28 下午4:24:26     * @param id     * @return     */    @SuppressWarnings("unchecked")    public <T extends View> T getItemView(int id)    {        View view =  mViews.get(id);        if (view == null)        {            view = mConvertView.findViewById(id);            mViews.append(id, view);        }        return (T) view;    }}
//创建个自定义字段的类 Get set
public class Adress {    private String id;    private String userid;    private String linkman;    private String tel_phone;    private String province;    private String city;    private String area;    private String address;    private String is_default;    private String updata_time;
//使用
public class MineAdapter extends BaseCommAdapter<Mine> {    public MineAdapter(List<Mine> datas) {        super(datas);    }    @Override    protected void setUI(ViewHolder holder, int position, Context context) {        Mine item = getItem(position);        TextView tv_name = holder.getItemView(R.id.mine_text);        tv_name.setText(item.name);        ImageView iv_head = holder.getItemView(R.id.mine_img);        iv_head.setImageResource(item.headId);    }    @Override    protected int getLayoutId() {        return R.layout.mine_item;    }}

1 0