2

我有一个列表视图,我想在其中显示视频的缩略图,但每次我滚动图像时都会再次下载。如何下载图像并显示它。这是我的代码:

@覆盖public View getView(int position,View convertView,ViewGroup parent){ViewHolder持有者=null;if(convertView==null){rootView=mInfliter.inflate(R.layout.adapter_video,parent,false);holder=新ViewHolder();holder.ivThumbnail=(图像视图)rootView.findViewById(R.id.ivThumbnaliVideoAdapter);rootView.setTag(holder);}其他{rootView=转换视图;holder=(ViewHolder)rootView.getTag();}imageLoader.displayImage(update.get(position).getThumbnail(),holder.ivThumbnal,option);return rootView;}
6
  • 我如何启用它以及如何使用它,因为我启用了缓存 评论 2014年9月19日14:36
  • 你怎么知道它又被下载了。。。服务器可能会出现问题,它不会对其作出反应如果修改自或其他与缓存相关的标头
    – 塞尔文
    评论 2014年9月19日14:37
  • imageview在再次下载图像之前不显示任何内容 评论 2014年9月19日14:38
  • 有时从磁盘缓存解码bitmab也需要一些时间
    – 塞尔文
    评论 2014年9月19日14:39
  • 因为我启用了缓存怎样?我在你的问题中没有看到与此相关的代码
    – 塞尔文
    评论 2014年9月19日14:41

1个答案1

重置为默认值
1

使用UIL,图像的下载配置为显示图像选项

例如:

mOptionsSimple=新的DisplayImageOptions。Builder().resetViewBeforeLoading(true).cacheOnDisc(true).imageScaleType(图像缩放类型.IN_SAMPLE_INT).bitmapConfig(位图.Config.RGB_565).build();

这里,cacheOnDisc为true将图像保存在磁盘上,而不是缓存中。当您滚动时,图像将重新加载,当然,因为在listview中,单元格是循环使用的。但使用此选项,如果已经下载,它将从磁盘重新加载

您也可以/或启用memoryCache,但要小心使用此功能。如果图像管理不正确,则可能是OutOfMemoryException的原因

图像加载程序配置以下是一个示例:

config=新的ImageLoaderConfiguration。生成器(getApplicationContext()).threadPoolSize(3).threadPriority(线程.NORM_PRIORITY-1).tasksProcessingOrder(队列处理类型.FIFO).image下载器(新的MyImageDownloader(mContext)).image解码器(新的BaseImage解码器(false)).discCache(新的UnlimitedDiscCache(cacheDir)).discCacheFileNameGenerator(新的HashCodeFileNameGenerator()).defaultDisplayImageOptions(mOptionsSimple).writeDebugLogs().build();

在最后一个示例中,discCache不受限制,如果您认为它会占用磁盘太多空间,可以更改它

2
  • 谢谢你的代码,它的工作,但我感到惊讶,因为我在内存中使用缓存,但它再次下载。在我使用磁盘上的缓存之前,但再次下载它,但我认为您使用的是bitmapConfig,它可以工作,我错了吗? 评论 2014年9月19日14:52
  • 当你说“再次下载”时,你看到日志中的痕迹了吗?还是图像感觉像是在加载?
    – 无液
    评论 2014年9月19日15:00

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.