当图像存储到自定义ArrayAdapter中时,我对缓存过程有点困惑....
据我所知,你只能在活动中使用LruCache,那么如何在适配器中缓存图像呢?
答案 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而不是图像。