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项布局等操作。
如需转载,请注明出处,如有雷同,技术巧合。