@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null){
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.item_photos, null);
viewHolder.mIvPhoto = (ImageView) convertView.findViewById(R.id.iv_photos_item);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
String path = mPhotoPaths.get(position);
viewHolder.mIvPhoto.setTag(path);
Bitmap bitmap = GalleryImageLoader.getInstance().loadBitmapFromFile(path, mPhotoSize, 
mPhotoSize, new GalleryImageLoader.GalleryImageLoadCallback() {

@Override
public void onImageLoaded(Bitmap bitmap, String path) {
ImageView imageview = (ImageView) mGvPhotosContainer.findViewWithTag(path);
if (bitmap != null && imageview != null) {
imageview.setImageBitmap(bitmap);
}
}
});
if (bitmap != null) {
viewHolder.mIvPhoto.setImageBitmap(bitmap);
} else {
viewHolder.mIvPhoto.setBackgroundResource(R.drawable.empty_photo);
}
return convertView;
}
这是我适配器的getView代码,求帮忙解决下,一直弄不出来

解决方案 »

  1.   

    我理解你的问题是,复用convertView时,此时convertView中的ImageView还用的上一个position的图片,等待当前position的图片加载完毕,会有一个视觉上的时间差,对不对?我解决listiew用的办法是进入getView,一从getTag获取convertView就将ImageView->setVisibility(invisible),等待真正的要加载的图片要显示时再setVisibility(visible) 不知道对你有没有帮助,具体的还要你具体来尝试
      

  2.   

    item_photos 里面的背景设置成你的加载中的那张图片。
      

  3.   

    在你的异步加载图片开启线程,在线程中加一句 sleep(500)试试看。
      

  4.   

    8楼正解,上个回复没看清楚。抱歉。
    // 设置标签
    imageView.setTag(imageUrl);
    然后 ImageView imageViewByTag = (ImageView) gridView.findViewWithTag(Tag);
    然后在判空等后续处理。
      

  5.   


    目前正是这样处理但是错误了,可以看一下我贴上去的我的代码,我已经打了tag了
      

  6.   

    把你的GridView的Item的布局的整个背景换成你要的那张加载中的图片。
    注意:是Item布局的整个背景,也就是说是RelativeLayout或者你用的那种布局。
      

  7.   

    无效的,不知道能否给我看个demo,这个设置背景的方法我这边无效