我有一个列表视图,我想在其中显示视频缩略图,但每次我再次滚动图像下载。我该如何下载图像并显示它。 这是我的代码:
@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;
}
答案 0 :(得分:1)
使用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不受限制,如果您认为它会在磁盘上占用太多空间,则可以更改