android listView的BaseAdapter的抽取

/**
* BaseAdapter的抽取
* @author xu-pc
*
* @param <T>
* 泛型数据的格式
* 需实现getHolder()
*/
public abstract class SuperBaseAdapter<T> extends BaseAdapter{
private List<T> mData;
/*public SuperBaseAdapter(List<T> list) {
this.mData = list;
}*/
public SuperBaseAdapter(List<T> data) {
this.mData = data;
}

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

@Override
public Object getItem(int position) {
return mData.get(position);
}

@Override
public long getItemId(int position) {
return position;
}
 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
BaseHolder holder = null;
if(convertView == null){
holder = getHolder();
}else{
holder = (BaseHolder) convertView.getTag();
}
holder.setData(mData.get(position));
return holder.convertView;
}
public abstract BaseHolder getHolder();


}
/**
* 抽取的holder
* @author xu-pc
*
* @param <T>
* 数据的泛型需要在子类中设定
*/
public abstract class BaseHolder<T>{
/**
* 1.布局文件 convertView
* 2.holder 绑定
* 3.数据mData
*/
public View convertView;
public T mData;
public Context context;


public BaseHolder() {
convertView = initView();
convertView.setTag(this);//绑定tag
}

public void setData(T dada){
this.mData = dada;
refreshView();
}
public abstract void refreshView();//数据设置

public abstract View initView();
}
//使用案例
/**
* 设置ListView的适配器
* @author zhenggangyao
*
*/
class OrderReceiverAdapter extends SuperBaseAdapter<OrderReceivertDTO>{

public OrderReceiverAdapter(List<OrderReceivertDTO> data) {
super(data);
}

@Override
public BaseHolder getHolder() {
return new OrderReveiverHolder();
}
}

public class OrderReveiverHolder extends BaseHolder<OrderReceivertDTO> {

private TextView tv_time;//发件的日期时间
private TextView tv_type;//快件类型
private TextView tv_name;//发件人姓名
private TextView tv_phone;//发件人电话
private TextView tv_address;//发件人详细地址

@Override
public void refreshView() {
tv_time.setText(mData.getSendConpany());
tv_type.setText(mData.getPackageClassName());
tv_name.setText(mData.getSendName());
tv_phone.setText(mData.getSendPhone());
tv_address.setText(mData.getSendAddress());
}

@Override
public View initView() {
View view = View.inflate(AppContext.getInstance(), R.layout.item_fragment_main, null);
tv_time = (TextView) view.findViewById(R.id.txt_date);
tv_type = (TextView) view.findViewById(R.id.txt_receiver_state);
tv_name = (TextView) view.findViewById(R.id.txt_name);
tv_phone = (TextView) view.findViewById(R.id.txt_phonenum);
tv_address = (TextView) view.findViewById(R.id.txt_address);
return view;
}
}

猜你喜欢

转载自1397452815.iteye.com/blog/2297703
今日推荐