Android——convertView
convertView
试想一下,我们要实现一个列表,但是数据量很大。你可能会想到懒加载这个优化点,但是如果每次加载一个item都去创建一个对象的话,多少有点浪费性能了。所以在Android中,我们在 BaseAdapter 的 getView 方法中,可以使用convertView进行优化。
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null);
holder = new ViewHolder();
holder.iv_icon = convertView.findViewById(R.id.iv_icon);
holder.tv_name = convertView.findViewById(R.id.tv_name);
holder.tv_desc = convertView.findViewById(R.id.tv_desc);
// 将视图持有者保存到转换视图当中
convertView.setTag(holder);
} else {
holder=(ViewHolder) convertView.getTag();
}
Planet planet = mPlaneList.get(i);
holder.iv_icon.setImageResource(planet.image);
holder.tv_name.setText(planet.name);
holder.tv_desc.setText(planet.desc);
return convertView;
}
public final class ViewHolder {
public ImageView iv_icon;
public TextView tv_name;
public TextView tv_desc;
}
案例代码