注意点:Android的反射机制有一个问题,就是Class.getDeclaredFields()返回的变量数组与我们定义的类的变量顺序是不一致的.Android是经过了字母顺序排序的.所以我们需要将变量名传入adapter
//定义一个带泛型的抽象类作为基类,T表示数据类,E表示ViewHolder类
public abstract class TBaseAdapter<T> extends BaseAdapter{
List<T> mList;//用于存放数据集
LayoutInflater mInflater;
Context context;
int [] viewIds;//存放控件ID
String[] fields;//存放ViewHolder类变量的名字
int layoutId;//布局文件ID
Class<?> classOfE;//ViewHolder类
//构造函数
public TBaseAdapter(Context context, List<T> mList) {
// TODO Auto-generated constructor stub
mInflater = LayoutInflater.from(context);
this.mList = mList;
this.context = context;
}
public void setFields(String[] fields) {
this.fields = fields;
}
public void setViewIds(int[] viewIds){
this.viewIds = viewIds;
}
public void setClass(Class<?> e){
this.classOfE = e;
}
public void setLayoutI