Listview数据适配器的基类的封装

Listview数据适配器的基类封装

最近忙完项目终于拥有了一些闲暇的事件来学习和整理资料,对于初学者来说Listview这个又爱又恨的控件是无法避免的,特别是在数据的适配上实现控件的刷新老是出现各种各样的问题。
记得最初学习listview控件的使用时看见的书籍和一些网络资料都是简单的对listview进行了数据适配,一些写法都是将数据源放入了adapter的构造方法中,这样虽然简单,但是在后面的数据更新操作时就会显得过于的呆板和麻烦。于是就有了各种各样封装后的Adapter来动态的加载数据,实现了数据更新的灵活性。

目录

基于BaseAdapter封装的AbstractAdapter

public abstract class AbstractAdapter<T> extends BaseAdapter {

    protected Context context;
    protected List<T> data = new ArrayList<T>();

    public AbstractAdapter(Context context) {
        this.context = context;
    }

    public boolean isEmpty() {
        return data.isEmpty();
    }

    public void add(T d) {
        if (d != null) {
            data.add(d);
        }
    }

    public void add(int index,T d) {
        if(d != null) {
            data.add(index, d);
        }
    }

    public T remove(int location) {
        return data.remove(location);
    }

    public void addAll(List<T> d) {
        if (d != null) {
            data.addAll(d);
        }
    }

    public void addAll(T[] d) {
        if(d != null) {
            int len = d.length;
            for(int i=0;i<len;i++) {
                data.add(d[i]);
            }
        }
    }

    public void clear() {
        data.clear();
    }

    public void clearAndAddAll(List<T> d) {
        clear();
        addAll(d);
    }

    public List<T> getAll(){
        return data;
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public T getItem(int position) {
        return data.get(position);
    }

    public int getPosition(T d) {
        return data.indexOf(d);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    protected View inflate(int resource) {
        return LayoutInflater.from(context).inflate(resource, null);
    }
}

说明

该基类可用于动态加载数据,动态更改Listview中item项布局等操作。
如需转载,请注明出处,如有雷同,技术巧合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值