我的项目使用流行的 LazyAdapter 和 listview 来获取滚动时的远程图像并将它们缓存在 sdcard 上以供以后使用。
在应用程序的另一个“屏幕”中,我正在显示地图片段,我想在 Google 地图视图的 CustomInfoWindow 中显示相关图像。这个想法是在必要时从服务器获取图像,如果之前已经下载了图像(通过触摸标记的列表),那么它从 sdcard 获取它。
要将 ImageLoader 与 ListView 一起使用,请将 imageview 与远程 url(在适配器 getView() 中)一起传递给 ImageLoader,如下所示:
imageLoader.DisplayImage("http://urltomarkerpic.com" + pic
+ ".jpg", ((ImageView) view.findViewById(R.id.badge)));
我尝试在我的自定义信息窗口类(实现 InfoWindowAdapter)的 render() 方法中使用它,它确实有效,但是图像仅在每个标记的第二次按下时加载,第一次按下仅显示默认 jpg(如指定在 xml 中)。一旦我再次触摸标记,它就会从 sdcard 加载图像(我已经用 logcat 确认了这一点)。
采用这种方法似乎很直观,在查看了 LadyAdapters 代码后,我认为这会起作用。有没有其他人尝试过这样做并让它工作?或者任何人都可以建议在 InfoWindow 中重用 ImageLoader 的替代方法(这将真正节省我的带宽),从而 mapview 和 listview 都可以利用延迟加载机制并将图像下载保持在最低限度