gpt4 book ai didi

android - 在 ListView 中使用通用图像加载器加载一次图像

转载 作者:行者123 更新时间:2023-11-29 01:39:08 24 4
gpt4 key购买 nike

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
rootView = mInflater.inflate(R.layout.adapter_video, parent, false);
holder = new ViewHolder();
holder.ivThumbnail = (ImageView) rootView.findViewById(R.id.ivThumbnailVideoAdapter);
rootView.setTag(holder);
}
else{
rootView = convertView;
holder = (ViewHolder)rootView.getTag();
}
imageLoader.displayImage(update.get(position).getThumbnail(), holder.ivThumbnail, option);
return rootView;
}

最佳答案

使用 UIL,图像的下载是通过 DisplayImageOptions 配置的

例如:

mOptionsSimple = new DisplayImageOptions.Builder().resetViewBeforeLoading(true)
.cacheOnDisc(true)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();

这里,cacheOnDisc 为 true 将图像保存在磁盘上,而不是缓存中。当您滚动时,图像将重新加载,当然是因为在 ListView 中单元格被回收。但是如果已经下载了这个选项,它将从磁盘重新加载

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

还有 ImageLoaderConfiguration 这是一个例子:

    config = new ImageLoaderConfiguration.Builder(getApplicationContext()).threadPoolSize(3)
.threadPriority(Thread.NORM_PRIORITY - 1)
.tasksProcessingOrder(QueueProcessingType.FIFO)
.imageDownloader(new MyImageDownloader(mContext))
.imageDecoder(new BaseImageDecoder(false))
.discCache(new UnlimitedDiscCache(cacheDir))
.discCacheFileNameGenerator(new HashCodeFileNameGenerator())
.defaultDisplayImageOptions(mOptionsSimple)
.writeDebugLogs()
.build();

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

关于android - 在 ListView 中使用通用图像加载器加载一次图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25936377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com