第一步:
在Adapter 的 getView 里这样写
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(getApplicationContext(), R.layout.item_list_app, null);
new ViewHolder(convertView);
}
ViewHolder holder = (ViewHolder) convertView.getTag();
ApplicationInfo item = getItem(position);
holder.iv_icon.setImageDrawable(item.loadIcon(getPackageManager()));
holder.tv_name.setText(item.loadLabel(getPackageManager()));
return convertView;
}
第二步: ViewHolder 初始化时 传入 convertView
class ViewHolder {
ImageView iv_icon;
TextView tv_name;
public ViewHolder(View view) {
iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
tv_name = (TextView) view.findViewById(R.id.tv_name);
view.setTag(this);
}
}
理解: 既然 是一个 View Holder 类, 那么 它到底 是 要 Hold 住谁, 当然是 Hold 住 convertView , 所以 传入 convertView 作为其构造函数的参数, 从面向对象的层面来讲,更加贴合 面向对象的原则