ViewHolder用法
Integer[] mImage = { R.color.burlywood, R.color.aquamarine,
R.color.blueviolet, R.color.whitesmoke, R.color.tomato,
R.color.peachpuff, R.color.mediumpurple };
String[] name = { "休闲区", "办公区", "娱乐区", "餐厅", "阳台", "书房" };
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = View.inflate(context, R.layout.gridview_layout, null);
viewHolder = new ViewHolder();
viewHolder.iv_icon = (ImageView) convertView
.findViewById(R.id.iv_icon);
viewHolder.tv_name = (TextView) convertView
.findViewById(R.id.tv_name);
viewHolder.iv_icon.setBackgroundResource(mImage[position]);
viewHolder.tv_name.setText(name[position]);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
return convertView;
}
class ViewHolder {
ImageView iv_icon;
TextView tv_name;
}
convertView作为一个缓存的View,可以重复循环利用缓存机制。
例如:
我有十万列标签,如果不用convertView的话系统启动的时候便会同时创建出十万个标签,严重占用资源,并且程序可能出现ARN
就是一个持有者的类,他里面一般没有方法,只有属性,作用就是一个临时的储存器,把你getView方法中每次返回的View存起来,可以下次再用。这样做的好处就是不必每次都到布局文件中去拿到你的View,提高了效率。