利用Android反射与泛型机制写一个通用的Adapter类

本文介绍如何利用Android的反射机制和泛型来创建一个通用的Adapter类。由于反射机制中Class.getDeclaredFields()返回的字段顺序与类定义顺序不同,需要传入变量名以确保正确绑定数据。通过继承此基类并设置布局ID、控件ID、字段名及ViewHolder类,可以简化Adapter的编写过程。
摘要由CSDN通过智能技术生成

注意点: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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值