Volley Plus Outofmemoryerror In List Adapter
I am using Volley Plus library. I am showing ListView with image and text view with no error, but when i scroll up and down lots of time in this listview it get OutOfMemoryError an
Solution 1:
The problem is that you keep loading images but the memory they fill isn't released afterwards. You could simply if you are recycling a row test if the image is a bitmap and then call recycle()
on it.
You might use something like this:
if (rowView == null) {
LayoutInflaterinflater= (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.list_row_item_products, null);
ViewHolderviewHolder=newViewHolder();
viewHolder.title = (TextView) rowView.findViewById(R.id.tvName);
viewHolder.image = (ImageView) rowView.findViewById(R.id.list_image);
rowView.setTag(viewHolder);
}
else {
ViewHolderholder= (ViewHolder) rowView.getTag();
if(holder.image.getDrawable() instanceof BitmapDrawable)
((BitmapDrawable) holder.image.getDrawable).getBitmap().recycle();
}
Solution 2:
You should create SimpleImageLoader in onCreate()
of Activity or some where else
DiskLruBasedCache.ImageCacheParamscacheParams=newDiskLruBasedCache.ImageCacheParams(mContext, "CacheDirectory");
cacheParams.setMemCacheSizePercent(0.5f);
SimpleImageLoadermImageFetcher=newSimpleImageLoader(mContext, null, cacheParams);
If you are still facing OOM exception then you can use NetworkImageView
.
Detailed example is present in github sample
Solution 3:
Here is the solution for this Problem with changes in Adapter class. In which i placed
DiskLruBasedCache.ImageCacheParamscacheParams=newDiskLruBasedCache.ImageCacheParams(mContext, "CacheDirectory");
cacheParams.setMemCacheSizePercent(0.5f);
SimpleImageLoadermImageFetcher=newSimpleImageLoader(mContext, null, cacheParams);
Inside if (rowView == null)
which prevents to use above code repetitively in Adabpter Class.
Post a Comment for "Volley Plus Outofmemoryerror In List Adapter"