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,提高了效率。

posted @ 2016-10-18 16:19  飞尽堂前燕  阅读(642)  评论(0)    收藏  举报