ListView加载多个图片的时候,图片是异步加载的,当item数量多于一屏时,滑动ListView,后面的item在加载图片的时候会混乱。
问题原因是ListView的item复用问题,ListView不会每次都去创建新的item,而是尽量复用之前的item,这就会导致item上图片混乱的问题,也许image对应的position已经改变了,但是它还是去加载以前的bitmap,所以我们要保证item与内容一一对应,通过设置tag可以实现,在给imageview设置图片的时候,判断tag是不是当前的,如果对应再设置图片。
异步加载图片代码如下:
((Activity)context).runOnUiThread(new Runnable() {
@Override
public void run() {
// obj是ViewHolder
ViewHolder vh = ((ViewHolder)obj);
// obj2是position
if (vh!=null && ((int)vh.pictureImageView.getTag())==((int)obj2)) {
vh.pictureImageView.setImageBitmap((Bitmap) map.get("bitmap"));
}
}
});