关键代码如下:
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate( R.layout.list_item, null); holder.img = (ImageView) convertView.findViewById(R.id.userimage); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } User user = list.get(position); // 给 ImageView 设置一个 tag holder.img.setTag(user.getImgUrl()); // 预设一个图片 holder.img.setImageResource(R.drawable.ic_launcher); final String tmpImageUrl = user.getImgUrl(); if (user.getImgUrl() != null && !user.getImgUrl().equals("")) { Bitmap bitmap = imageLoader.loadImage(holder.img, user.getImgUrl(), new ImageDownloadCallBack() { @Override public void onImageDownloaded(ImageView imageView, Bitmap bitmap) { // 通过 tag 来防止图片错位 if (imageView.getTag() != null && imageView.getTag().equals(tmpImageUrl)) { imageView.setImageBitmap(bitmap); } } }); if (bitmap != null) { holder.img.setImageBitmap(bitmap); } } return convertView; }
// 图片错位
// 给 ImageView 设置一个 tag
holder.icon.setTag(bean.getImg_url());
// 预设一个图片
holder.icon.setImageResource(R.drawable.default_image_150);
final String tmpImageUrl = bean.getImg_url();
DisplayImage.displayImage(bean.getImg_url(), holder.icon,
R.drawable.default_goods_img, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
((ImageView) view)
.setImageResource(R.drawable.default_image_150);
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
((ImageView) view)
.setImageResource(R.drawable.default_goods_img);
}
@Override
public void onLoadingComplete(String imageUri,
View view, Bitmap loadedImage) {
if (view.getTag() != null
&& view.getTag().equals(tmpImageUrl)) {
((ImageView) view).setImageBitmap(loadedImage);
}
}
@Override
public void onLoadingCancelled(String imageUri,
View view) {
((ImageView) view)
.setImageResource(R.drawable.default_goods_img);
}
});