basteez
basteez

Reputation: 477

Cache images in custom adapters

I'm a little bit confused about the caching procedure when the images are stored into a custom ArrayAdapter....

As far as I know you can use LruCache only on Activities, so how to cache images in an adapter?

Upvotes: 0

Views: 575

Answers (2)

Phil
Phil

Reputation: 36289

A Cache is just a data structure that keeps track of Objects. You can create your own cache, then save, for example, bitmaps using URLs as keys. For example, take this Object:

public static Map<String, Object> cache = new HashMap<String, Object>();

This is your cache. You can now save images by their urls. For example, say you get a bitmap from http://www.example.com/img.png. A simple method like this will get the cached image if it exists, or get a new one if it does not:

public Bitmap getImage(String url)
{
    synchronized(cache) {
        Object o = cache.get(url);
        if (o != null)
            return (Bitmap) o;
        //here, get the bitmap from the URL using whatever method you want, then save it and return it:
        Bitmap bmp = getBitmapForURL(url);
        cache.put(url, bmp);
        return bmp;
    }
}

So you just call:

myImageView.setImageBitmap(getImage("http://www.example.com/img.png"));

Upvotes: 1

AndRSoid
AndRSoid

Reputation: 1825

Store only image URIs in adapter not the images.

Upvotes: 0

Related Questions