要求所有的Adapter都繼承自BaseAdapter践付,從構造函數(shù)注入List<自定義實體>這樣的數(shù)據(jù)集合群叶,從而完成ListView的填充工作盯腌,如下所示:
public class TemplateAdapter extends BaseAdapter {
private Context context = null;
private List<Entity> entityList= null;
public TemplateAdapter(Context context, List<Entity> entityList) {
this.context = context;
this.entityList= entityList;
}
@Override
public int getCount() {
return entityList.size();
}
@Override
public Object getItem(int position) {
return entityList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
ViewHolder viewHolder = null;
if (convertView== null) {
convertView= LayoutInflater.from(context).inflate(R.layout.item_user_info, null);
viewHolder = new ViewHolder();
viewHolder.tvEmail= (TextView) convertView.findViewById(R.id.tv_email);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Entity entity = entityList.get(position);
viewHolder.tvEmail.setText(entity.getEmail());
return convertView;
}
static class ViewHolder {
TextView tvEmail;
}
}
對于每個自定義的Adapter募逞,都要實現(xiàn)以下4個方法:
getCount();
getItem();
getItemId();
getView();
此外猖腕,還要內(nèi)置一個Holder嵌套類,用于存放ListView中每一行中的控件硼瓣。ViewHolder的存在究飞,可以避免頻繁創(chuàng)建同一個列表項,從而極大地節(jié)省內(nèi)存堂鲤。