【发布时间】:2013-07-15 16:56:38
【问题描述】:
我正在使用Android-Universal-Image-Loader 库将远程图片加载到我的 GridView 单元格中的 ImageView。
这里是imageLoader的配置:
new ImageLoaderConfiguration.Builder(Config.context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.memoryCacheSize(20 * 1024 * 1024) // 20 Mb
.memoryCache(new LruMemoryCache(20 * 1024 * 1024))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.enableLogging() // Not necessary in common
.build();
和显示选项:
new DisplayImageOptions.Builder()
.showStubImage(R.drawable.blank)
.showImageForEmptyUri(R.drawable.no_image)
.build();
问题: 一旦网格视图的活动开始一切正常并且图像出现在单元格中, 然后我向下滚动网格(网格中有大约 20 个项目),其他图像正确加载。 但是一旦我滚动顶部已经加载的图像再次开始加载。
在上下滚动几下后,网格会保存所有图像,并且它们不再消失。
有没有人遇到过类似的问题,或者你知道我做错了什么。 感谢您的帮助。
添加: 这是我的适配器中的 getView 方法:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if ( view == null ) {
view = Config.context.getLayoutInflater().inflate(R.layout.featured, null);
holder = new ViewHolder();
holder.titleText = (TextView) view.findViewById(R.id.featured_title);
holder.priceText = (TextView) view.findViewById(R.id.featured_price);
holder.image = (ImageView) view.findViewById(R.id.thumbnail_image);
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();
}
HashMap<String, String> listing = listings.get(position);
/* set text values */
holder.titleText.setText(listing.get("title"));
holder.priceText.setText(listing.get("price"));
/* load image to list (AsyncTask) */
Utils.imageLoaderFeatured.displayImage(listing.get("photo"), holder.image, Utils.imageLoaderOptionsFeatured);
return view;
}
PS。如果您想查看其他代码(可能是网格适配器)来帮助我解决此问题,请告诉我。
约翰
【问题讨论】:
-
据我所知,您不在内存或磁盘上使用缓存。尝试在显示选项中启用缓存。
-
我之前使用过它,但在将库更新到 1.8.5 版本后将其删除,因为 .cacheInMemory() 和 .cacheOnDisc() 已被弃用,即使使用 .cacheInMemory() 图片也不会保留第一次,用户应该在应用程序缓存网格中的所有图片之前向上和向下滚动至少 4 次。
-
您应该阅读那些不推荐使用的方法的 Java 文档。所以你可以看到你应该使用
.cacheInMemory(true)和.cacheOnDisc(true)来代替。您是否在 UIL 示例应用中看到了您的问题? -
您好 NOSTRA,感谢您对弃用问题的澄清,我得到并更正了,但问题仍然存在,并且 UIL 示例应用程序中的网格中的行为相同。我在三星galaxy nexus 和三星n800 平板电脑上进行了测试,仅在网格视图中,列表视图可以正确保存图片。如果你愿意,我可以尝试录制视频。
-
您好,Nostra,问题仍然存在于库中,请检查...
标签: android image loader universal universal-image-loader