【发布时间】:2014-11-27 06:14:53
【问题描述】:
我在 ListView 中使用Universal Image Loader。我的问题在于以下用例:
当我在列表视图上滚动时,它可以完美运行,并加载所有图像。假设,我在列表视图的屏幕上有 2 个项目,它们正在下载中。我可以通过ImageLoadingProgressListener() 看到它的进度,当我滚动到任何地方并返回相同的图像时,进度又开始了,以前下载的数据丢失了!!有什么方法可以存储下载的进度,以便稍后我们在列表视图中返回该图像时可以恢复该过程。
编辑:我可以在下载这些图像后缓存它们,也可以使用这些缓存的图像,我的问题是在下载、滚动和返回的时间。
我的DisplayImageOptions:
options = new DisplayImageOptions.Builder()
.displayer(new RoundedBitmapDisplayer(100))
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
我的ImageLoaderConfiguration:
new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.diskCacheSize(50 * 1024 * 1024) // 50 Mb
.tasksProcessingOrder(QueueProcessingType.LIFO)
.writeDebugLogs() // Remove for release app
.build();
我的getView():
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = inflater.inflate(R.layout.card, parent,false);
holder = new ViewHolder();
holder.ivContent = (ImageView) convertView.findViewById(R.id.ivContent);
convertView.setTag(holder);
}
else{
holder = (ViewHolder) convertView.getTag();
}
try {
ImageLoader.getInstance().displayImage(url, holder.ivContent, options, new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view,Bitmap loadedImage){
holder.ivContent.setVisibility(View.VISIBLE);
}
},
new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String arg0, View arg1, int count, int total) {
System.out.println("prog: "+(count*100)/total);
//holder.ivLoaderUp.setClipping((count*100)/total);
}
});
}
catch (ParseException e) {
e.printStackTrace();
}
return convertView;
}
有没有人遇到过这个问题,请帮忙
【问题讨论】:
标签: android android-listview universal-image-loader