package cm.android.sdk.widget.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.BaseAdapter;
import java.util.List;
import cm.java.util.ObjectUtil;
/**
* @desc : 抽象Adapter类
*/
@Deprecated
public abstract class AbstractAdapter<T> extends BaseAdapter {
/**
* 数据缓存
*/
protected final List<T> mDataCache = ObjectUtil.newArrayList();
/**
* 用于从XML文件中创建Layout
*/
protected LayoutInflater mInflater;
protected Context context;
/**
* </br><b>description : </b> 创建Adapter,需要给定View创建接口。
*/
public AbstractAdapter(Context context) {
this.context = context;
mInflater = LayoutInflater.from(this.context);
}
/**
* <br>
* <b>title : </b> 更新数据集 <br>
* <b>description :</b>更新数据集 <br>
*/
public void update(List<T> data) {
clear();
add(data);
}
/**
* <b>description :</b> 清除缓存数据 <br>
*/
public void clear() {
mDataCache.clear();
}
/**
* <b>description :</b>添加数据集,向数据缓存中添加多个元素。 <br>
*/
public void add(List<T> data) {
if (data != null) {
mDataCache.addAll(data);
}
}
/**
* <b>description :</b>添加数据元素,向数据缓存中添加单个元素。 <br>
*/
public void add(T data) {
if (data != null) {
mDataCache.add(data);
}
}
/**
* <b>description :</b> 交换两个元素的位置 <br>
*/
public void exchange(int src, int target) {
T endObject = getItem(target);
T startObject = getItem(src);
mDataCache.set(src, endObject);
mDataCache.set(target, startObject);
}
public void remove(int position) {
int pos = getRealPosition(position);
mDataCache.remove(pos);
}
@Override
public int getCount() {
return mDataCache.size();
}
@Override
public T getItem(int position) {
int pos = getRealPosition(position);
return mDataCache.get(pos);
}
@Override
public long getItemId(int position) {
return position;
}
/**
* 返回真实的position
*/
protected int getRealPosition(int position) {
int size = mDataCache.size();
if (size == 0) {
return 0;
}
int pos = position % size;
return pos;
}
}