package mu.basic.adapter;
public abstract class BaseAdapter<T> extends android.widget.BaseAdapter {
/**
* 适配器数据
*/
private final List<T> data = new ArrayList<>();
public List<T> getData() {
return data;
}
protected int size() {
return data.size();
}
public boolean add(T bean) {
if (bean != null) {
boolean isAdd = this.data.add(bean);
notifyDataSetChanged();
return isAdd;
}
return false;
}
public boolean remove(T bean) {
if (bean != null) {
boolean isRemove = this.data.remove(bean);
notifyDataSetChanged();
return isRemove;
}
return false;
}
public T remove(int position) {
if (getItemId(position) >= 0 && getItemId(position) < getCount()) {
T bean = this.data.remove((int) getItemId(position));
notifyDataSetChanged();
return bean;
}
return null;
}
public boolean addAll(List<T> data) {
if(data != null) {
boolean isAddAll = this.data.addAll(data);
notifyDataSetChanged();
return isAddAll;
}
return false;
}
public void clear() {
this.data.clear();
notifyDataSetChanged();
}
/**
* 布局加载器
*/
protected LayoutInflater mInflater;
public BaseAdapter(Context context) {
super();
mInflater = LayoutInflater.from(context);
}
/**
* 返回Item布局ID
* @return
*/
protected abstract @LayoutRes
int getLayoutResId();
@Override
public int getCount() {
return data.size();
}
@Override
public T getItem(int position) {
return data.get((int) getItemId(position));
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int layoutId = getLayoutResId();
if (layoutId == 0) {
return null;
}
ViewHolder holder = ViewHolder.getHolder(convertView, layoutId , parent, mInflater);
onConvert(holder, position);
return holder.getConvertView();
}
/**
* 数据处理
* @param holder
* @param position
*/
protected void onConvert(ViewHolder holder, int position) {
onConvert(holder, getItem(position));
};
/**
* 数据处理
* @param holder
* @param bean
*/
protected abstract void onConvert(ViewHolder holder, T bean);
}