1,convertView的重用可以减少inflate
2,viewHolder可以减少findViewById
3,如果存在多个item的类型,由于ListView存在对convertView的重用,可能导致不同的item类型使用同一个convertView,也就是说view和item的数据可能不匹配,因此,需要给把viewType绑定到convertView上,然后在getView之初通过getTag获得viewType,看是否一致。不一致,重新inflate。
if (convertView == null
|| ((Integer) convertView.getTag(R.id.viewType)) != viewType)
{
if (viewtype==A)
{
convertView = mInflater.inflate(
R.layout.A, null);
}
else
{
convertView = mInflater.inflate(
R.layout.B, null);
}
ViewHolder holder = new ViewHolder(convertView, viewTyoe);
convertView.setTag(holder);
convertView.setTag(R.id.viewType, viewType);
}