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

Android 在自定义适配器中缓存图像,android,caching,android-adapter,Android,Caching,Android Adapter,当图像存储到自定义ArrayAdapter中时,我对缓存过程有点困惑 据我所知,您只能在活动中使用LruCache,因此如何在适配器中缓存映像?仅在适配器中存储映像URI,而不是映像。缓存只是一种跟踪对象的数据结构。您可以创建自己的缓存,然后使用URL作为键保存位图。例如,以该对象为例: public static Map<String, Object> cache = new HashMap<String, Object>(); 所以你只要打电话: myImageVi

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


据我所知,您只能在活动中使用LruCache,因此如何在适配器中缓存映像?

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

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

public static Map<String, Object> cache = new HashMap<String, Object>();
所以你只要打电话:

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

什么图像?你说的是你下载的图片吗?在这个特殊的例子中,有本地图片(Drawables),但我的问题更一般,Android文档没有解释得这么清楚,我不确定我知道你的意思-你想缓存Drawables吗?你能发布你的代码吗?这只是一个演示应用程序…我有一个listFragment,每行有一个ImageView;这些图像视图具有可绘制的as src;我只是想缓存它们,以避免低内存设备(我已经调整了这些图像的大小)上的小故障,即使使用本地可绘制文件?所以你是说用它们的uri将图像存储到适配器中,然后在活动中缓存它们,对吗?这不可能使用LruCache吗?@tizionario是的,这看起来像是我重写了
LruCache
。还要注意,这两种实现都不限于活动。真的吗?从Android doc上看,似乎我只能在活动中使用LruCache,我不知道这一点
myImageView.setImageBitmap(getImage("http://www.example.com/img.png"));