import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public abstract class AppBaseAdapter<T> extends BaseAdapter {
public List<T> dataList = new ArrayList<T>();
public LayoutInflater inflater;
public Context mContext;
public AppBaseAdapter(Context context) {
inflater = LayoutInflater.from(context);
mContext = context;
}
public AppBaseAdapter(List<T> dataList, Context context) {
inflater = LayoutInflater.from(context);
mContext = context;
this.dataList = dataList;
}
public List<T> getDataList() {
return dataList;
}
public void setDataList(List<T> dataList) {
this.dataList = dataList;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (dataList == null) {
return 0;
}
return dataList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return dataList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
BaseViewHolder baseViewHolder = null;
if (convertView == null) {
convertView = getConvertView();
baseViewHolder = initViewHolder(convertView);
convertView.setTag(baseViewHolder);
} else {
baseViewHolder = (BaseViewHolder) convertView.getTag();
}
setContentView(position, baseViewHolder);
return convertView;
}
/**
* 获取ConvertView
*
* @return
*/
protected abstract View getConvertView();
/**
* 初始化ViewHolder,把ViewHolder相关的属性进行赋值在这个方法里面进行
*
* @param convertView
* @return
*/
protected abstract BaseViewHolder initViewHolder(View convertView);
/**
* 这里主要对contentview的Item进行处理,相关的事件,逻辑都在这里进行
*
* @param position
* @param baseViewHolder
*/
protected abstract void setContentView(int position, BaseViewHolder baseViewHolder);
// 持有Item相关的类
public static class BaseViewHolder {
}
}
public class SymptomAdapter extends AppBaseAdapter<SymptomData> {
public SymptomAdapter(Context context) {
super(context);
}
public SymptomAdapter(List<SymptomData> dataList, Context context) {
super(dataList, context);
}
@Override
protected View getConvertView() {
return inflater.inflate(R.layout.activity_self_symptom_item, null);
}
@Override
protected BaseViewHolder initViewHolder(View convertView) {
ViewHolder viewHolder = new ViewHolder();
viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);
return viewHolder;
}
@Override
protected void setContentView(int position, BaseViewHolder baseViewHolder) {
SymptomData data = dataList.get(position);
ViewHolder viewHolder = (ViewHolder) baseViewHolder;
viewHolder.tv_name.setText(data.getSymptomInfo());
}
public static class ViewHolder extends BaseViewHolder {
TextView tv_name;
}
}