android 学习中发现经常血药用到ListView,而且还需要自定义View显示,实现ListAdapter interface
于是写了一个通用的CommonAdapter 类,简化ListAdapter 的实现.把Adaapter 需要根据layout 动态实现的部分提取出来.做成接口.静态部分做成通用方法,以后开发就可以只关注layout 部分的绑定.简化开发.
CommonAdapter 类
public class CommonAdapter extends BaseAdapter {
private int customXmlName;
protected ViewHolderModel Holder = null;
protected final List<Map<String, Object>> list;
private final Context context;
/*
* 构造函数设置Context 和 数据源
*/
public CommonAdapter(ViewHolderModel vModel) {
customXmlName = com.gzh.search.R.layout.list_item;
this.context = vModel.context;
this.list = vModel.list;
this.Holder = vModel;
}
@Override
public int getCount() {
return list.size();
}
public void setLayout_Name(int name) {
if (name <= 0) {
return;
}
customXmlName = name;
}
@Override
public Object getItem(int position) {
if (position < list.size()) {
return list.get(position);
} else {
return null;
}
}
@Override
public long getItemId(int position) {
return position;
}
public void HolderModel(ViewHolderModel vModel) {
this.Holder = vModel;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(customXmlName,
null);
Holder.InitViewHoler(convertView);
convertView.setTag(Holder);
} else {
Holder = (ViewHolderModel) convertView.getTag();
}
Holder.SetViewHolerValues(convertView, position);
return convertView;
}
}
private int customXmlName;
protected ViewHolderModel Holder = null;
protected final List<Map<String, Object>> list;
private final Context context;
/*
* 构造函数设置Context 和 数据源
*/
public CommonAdapter(ViewHolderModel vModel) {
customXmlName = com.gzh.search.R.layout.list_item;
this.context = vModel.context;
this.list = vModel.list;
this.Holder = vModel;
}
@Override
public int getCount() {
return list.size();
}
public void setLayout_Name(int name) {
if (name <= 0) {
return;
}
customXmlName = name;
}
@Override
public Object getItem(int position) {
if (position < list.size()) {
return list.get(position);
} else {
return null;
}
}
@Override
public long getItemId(int position) {
return position;
}
public void HolderModel(ViewHolderModel vModel) {
this.Holder = vModel;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(customXmlName,
null);
Holder.InitViewHoler(convertView);
convertView.setTag(Holder);
} else {
Holder = (ViewHolderModel) convertView.getTag();
}
Holder.SetViewHolerValues(convertView, position);
return convertView;
}
}