热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Listview使用通用图像加载器重新加载已加载的图像

如何解决《Listview使用通用图像加载器重新加载已加载的图像》经验,为你挑选了1个好方法。



1> 小智..:

你可以做很少的修复

    你的观看者几乎没用.您必须按照以下方式使用它

    ViewHolder viewHolder;
    if (view == null) {
        viewHolder = new ViewHolder();    
        viewHolder.image = (ImageView) view.findViewById(R.id.capsule_media_list_item_thumbnail_1);             
        view.setTag(viewHolder);    
    }else{
     viewHolder =  view.getTag(viewHolder); 
    }
    

    您应该只声​​明ImageLoader和DisplayImageOptions实例一次.可能在构造函数中.

    ImageLoader imageLoader = ImageLoader.getInstance();
    DisplayImageOptions optiOns= new DisplayImageOptions.Builder().cacheInMemory(true)
            .cacheOnDisc(true).resetViewBeforeLoading(true)
            .showImageForEmptyUri(fallbackImage)
            .showImageOnFail(fallbackImage)
            .showImageOnLoading(fallbackImage).build();
    

    在获取视图中,您只需加载图像,如下所示

编辑: 我没有使用过ImageAware.你必须这样使用.

ImageAware imageAware = new ImageViewAware(viewHolder.image, false);
imageLoader.displayImage(imageUri, imageAware,options);

这里的答案说这确实是UIL的一个问题,在1.9版本中得到了解决.

编辑2: 我在Github上跟踪了有关该问题的讨论,发现这个答案可以手动检查图像网址.它建议做以下事情

//lets prevent "blinking" by "saving URL tag" hack

    if (viewHolder.image.getTag() == null ||
            !viewHolder.image.getTag().equals(imageUri)) {

        //we only load image if prev. URL and current URL do not match, or tag is null

        ImageAware imageAware = new ImageViewAware(viewHolder.image, false);
        imageLoader.displayImage(imageUri, imageAware,options);
        viewHolder.image.setTag(imageUri);
    }


推荐阅读
author-avatar
liu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有