优化ListView数据适配器套路
// 静态区中放的是控件
static class ViewHolder {//不能抽取出一个类,成员内部类可以用static修饰
ImageView mIcon;
TextView mName;
TextView mNumber;
}
if (convertView == null) {
convertView = View.inflate(context, R.layout.item_contact, null);
// 设置数据从静态区中拿
holder = new ViewHolder();
holder.mIcon = (ImageView) convertView
.findViewById(R.id.item_contact_iv_icon);
holder.mName = (TextView) convertView
.findViewById(R.id.item_contact_tv_name);
holder.mNumber = (TextView) convertView
.findViewById(R.id.item_contact_tv_number);
// 复用窗体为空时,打标记
convertView.setTag(holder);
} else {
// 复用窗体非空时,拿标记给帮助类
holder = (ViewHolder) convertView.getTag();
}
holder.mName.setText(contactBean.getName());
holder.mNumber.setText(contactBean.getNumber());
holder.mIcon.setImageBitmap(ContactProvider.getContactPhoto(context,
contactBean.getContactId()));
// 返回复用窗体
return convertView;
没有优化的
if (convertView == null) {
// 没有复用
convertView = View.inflate(ContactSelectActivity.this,
R.layout.item_contact, null);
}
ImageView ivIcon = (ImageView) convertView.findViewById(R.id.item_contact_iv_icon);
TextView tvName = (TextView) convertView.findViewById(R.id.item_contact_tv_name);
TextView tvNumber = (TextView) convertView.findViewById(R.id.item_contact_tv_number);
ContactBean bean = mDatas.get(position);
ivIcon.setImageBitmap(ContactProvider.getContactPhoto(
ContactSelectActivity.this, bean.contactId));
tvName.setText(bean.name);
tvNumber.setText(bean.number);
return convertView;
}