原文链接:http://my.eoe.cn/littlebirds/archive/14895.html?f_section=new
一、ViewHolder是什么呢?
对于初学者而言,或许会认为是Android框架下的某个类,其实不然,ViewHolder其实是我们自己定义的类,用在ListView或者GridView的Adapter中,如何使用?请看下面。
二、ViewHolder如何使用?
// 定义静态类ViewHolder
static class ViewHolder{
public ImageView img;
public TextView title;
public TextView info;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_item, null);
holder.img = (ImageView)convertView.findViewById(R.id.img);
holder.title = (TextView)convertView.findViewById(R.id.title);
holder.info = (TextView)convertView.findViewById(R.id.info);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
holder.img.setImageResource(R.drawable.ic_launcher);
holder.title.setText("LittleBoy");
holder.info.setText("LittleBoy");
}
return convertView;
}
三、为什么要用ViewHolder?
如果大家看懂了上面代码的话,这个为什么是很容易解释的。
使用ViewHolder最大的优点就在于:
ViewHolder缓存了convertView中显示数据的子控件,这样不用每次刷新ListView或GrdiView都调用findViewById(...);方法,大大提高了控件的响应速度。
四、
关键代码:convertView.setTag(holder);