I am using Android-Universal-Image-Loader library to load a remote pictures to ImageView in my GridView cells.
Here the the imageLoader configurations:
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();
and Display Options:
new DisplayImageOptions.Builder()
.showStubImage(R.drawable.blank)
.showImageForEmptyUri(R.drawable.no_image)
.build();
The problems: Once activity with the gridview starts all works properly and images appears in the cells, then I scroll grid down (I have about 20 items in the grid) and other images load properly. But once I scroll top the images which already loaded start loading again.
After a few scrolls up and down grid saves all images and they don't disappear anymore.
Did someone meet any similar problems or you know what I did wrong. Thanks for help.
ADDED: Here is the getView method in my adapter:
@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. Let me know if you want to see other code (grid adapter maybe) to help me with this issue.
John
I have encountered the same problem on Universal-Image-Loader Demo and I hope the Library developers will solve the problem in the next update.
UPDATE: The problem fixed with help of nostra13, you have to update the library to 1.9 version and use this way of displaying pictures in the imageView
:
ImageAware imageAware = new ImageViewAware(imageView, false);
imageLoader.displayImage(imageUri, imageAware);
It solved my problem. Some details of why you should do this can be found here and here