在自定义适配器中缓存图像

时间:2014-01-09 17:35:23

标签: android caching android-adapter

当图像存储到自定义ArrayAdapter中时,我对缓存过程有点困惑....

据我所知,你只能在活动中使用LruCache,那么如何在适配器中缓存图像呢?

2 个答案:

答案 0 :(得分:1)

缓存只是一种跟踪对象的数据结构。您可以创建自己的缓存,然后使用URL作为键保存位图。例如,拿这个对象:

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

这是你的缓存。您现在可以通过其网址保存图像。例如,假设您从 http://www.example.com/img.png 获取位图。像这样的简单方法将获得缓存的图像(如果存在),或者如果不存在则获取新的图像:

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;
    }
}

所以你只需致电:

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

答案 1 :(得分:0)

仅在适配器中存储图像URI而不是图像。