我正在使用Android-Universal-Image-Loader库,在我的GridView单元格中加载远程图片到ImageView中。
以下是imageLoader的配置:
问题: 一旦启动带有网格视图的活动,所有内容正常工作并且图像出现在单元格中, 然后我向下滚动网格(我有大约20个项目在网格中),其他图像会正确加载。 但是一旦我向上滚动,已经加载的图像开始重新加载。
几次上下滚动后,网格保存了所有图像,它们不再消失。
有人遇到过类似的问题或者你知道我做错了什么。感谢您的帮助。
添加: 这是我的适配器中的getView方法:
以下是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;
}
附注:如果您想查看其他代码(可能是网格适配器),以帮助我解决此问题,请告诉我。
约翰
.cacheInMemory(true)
和.cacheOnDisc(true)
代替它们。你在UIL示例应用程序中看到了你的问题吗? - nostra13