今天偶然发现ListView的getView方法会执行多次,一共只有3个Item,getView却调用了n次,代码如下
<span style="white-space:pre"> </span>@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("-->>getView:"+position+" "+convertView);
if(convertView==null){
mItemView=new ListItemView();
convertView=mInflater.inflate(mItemResourceId, null);
mItemView.txtName= (TextView)convertView.findViewById(R.id.txt);
mItemView.img=(ImageView) convertView.findViewById(R.id.item_img);
convertView.setTag(mItemView);
}else{
mItemView=(ListItemView)convertView.getTag();
}
String str=mDataItems.get(position);
mItemView.txtName.setText(str);
return convertView;
}
打印出来的日志如图
很奇怪为什么不只打印三次,而是每一项都进行了多次重绘,经过多番调试,仍未解决,于是上网查了下,
网上说是ListView高度不固定造成的,仔细想想还真是,便把ListView高度设为固定,还真成功了,如下图,
没有出现打印多次这种情况了。