ListView详解之六

Adapter是ListView和数据源之间的桥梁,当每条数据进入可见区时,adapter会调用其getView()方法,并返回代表具体数据的视图。滚动的时候频繁调用,支持成千上万的数据。重写的getView方法有如下几种形式:

public void getView(int position , View convertView , ViewGroup parent)
{
View item = mInflater.inflate(R.layout.list_view, null);
(TextView)item.findViewById(R.id.text).setText(DATA[position]);
(ImageView)item.findViewById(R.id.img).setImageBitmap(icon);
return item;
}
public void getView(int position , View convertView , ViewGroup parent)
{
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_view, null);
}      
(TextView)convertView.findViewById(R.id.text).setText(DATA[position]); 
  (ImageView)convertView.findViewById(R.id.img).setImageBitmap(icon);
return convertView;
}
static class ViewHolder
{
private TextView tv;
private ImageView iv;
}
public void getView(int position , View convertView , ViewGroup parent)
{
ViewHolder holder;
if(convertView == null)
{
convertView = mInflater.inflate(R.layout.list_view, null);
holder = new ViewHolder();
holder.tv = (TextView)convertView.findViewById(R.id.text);
holder.iv = (ImageView)convertView.findViewById(R.id.img);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.tv.setText(DATA[position]);
holder.iv.setImageBitmap(icon);
return convertView;
}

这三种方式,从前往后效率依次提高!



posted @ 2012-01-18 10:03  古老的陶罐  阅读(513)  评论(3)    收藏  举报