要求所有的Adapter都繼承自BaseAdapter,從構(gòu)造函數(shù)注入List<自定義實(shí)體>這樣的數(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;
}
}
對于每個(gè)自定義的Adapter,都要實(shí)現(xiàn)以下4個(gè)方法:
getCount();
getItem();
getItemId();
getView();
此外,還要內(nèi)置一個(gè)Holder嵌套類,用于存放ListView中每一行中的控件。ViewHolder的存在,可以避免頻繁創(chuàng)建同一個(gè)列表項(xiàng),從而極大地節(jié)省內(nèi)存。