Android-Universal-Image-Loader不会在gridview中滚动加载的图像

Joh*_*n F 8 android image loader universal universal-image-loader

我正在使用Android-Universal-Image-Loader库将远程图片加载到GridView单元格中的ImageView.

这里是imageLoader配置:

new ImageLoaderConfiguration.Builder(Config.context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.memoryCacheSize(20 * 1024 * 1024) // 20 Mb
.memoryCache(new LruMemoryCache(20 * 1024 * 1024))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.enableLogging() // Not necessary in common
.build();
Run Code Online (Sandbox Code Playgroud)

和显示选项:

new DisplayImageOptions.Builder()
.showStubImage(R.drawable.blank)
.showImageForEmptyUri(R.drawable.no_image)
.build();
Run Code Online (Sandbox Code Playgroud)

问题:一旦使用gridview的活动开始一切正常并且图像出现在单元格中,然后我向下滚动网格(我在网格中有大约20个项目),其他图像正确加载.但是一旦我滚动顶部已经加载的图像再次开始加载.

在向上和向下滚动几次后,网格会保存所有图像,并且它们不会再消失.

有人遇到任何类似的问题,或者你知道我做错了什么.感谢帮助.

ADDED:这是我的适配器中的getView方法:

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    View view = convertView;
    ViewHolder holder;

    if ( view == null ) {           
        view = Config.context.getLayoutInflater().inflate(R.layout.featured, null);
        holder = new ViewHolder();

        holder.titleText = (TextView) view.findViewById(R.id.featured_title);
        holder.priceText = (TextView) view.findViewById(R.id.featured_price);
        holder.image = (ImageView) view.findViewById(R.id.thumbnail_image);

        view.setTag(holder);
    }
    else {
        holder = (ViewHolder) view.getTag();
    }

    HashMap<String, String> listing = listings.get(position);

    /* set text values */
    holder.titleText.setText(listing.get("title"));
    holder.priceText.setText(listing.get("price"));

    /* load image to list (AsyncTask) */
    Utils.imageLoaderFeatured.displayImage(listing.get("photo"), holder.image, Utils.imageLoaderOptionsFeatured);

    return view;
}
Run Code Online (Sandbox Code Playgroud)

PS.如果您想查看其他代码(可能是网格适配器)以帮助我解决此问题,请告诉我.

约翰

Joh*_*n F 16

我在Universal-Image-Loader Demo上遇到了同样的问题,我希望Library开发人员能够在下次更新时解决问题.

更新:在nostra13的帮助下修复了问题,你必须将库更新到1.9版本并使用这种方式在以下位置显示图片imageView:

ImageAware imageAware = new ImageViewAware(imageView, false);
imageLoader.displayImage(imageUri, imageAware);
Run Code Online (Sandbox Code Playgroud)

它解决了我的问题.您可以在此处此处找到有关您应该执行此操作的详细信息