Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用infowindowadapter将数据发送到google地图_Android_Google Maps_Infowindow - Fatal编程技术网

Android 使用infowindowadapter将数据发送到google地图

Android 使用infowindowadapter将数据发送到google地图,android,google-maps,infowindow,Android,Google Maps,Infowindow,我正在尝试使用infowindowadapter将数据获取到google地图信息窗口。问题是某种鸡和蛋类型的问题。由于onPostExecute必须放在UI线程上,因此我需要将infowindowadapter放在onPostExecute方法中。但是,我必须使用infowindowadapter中的AsyncTask调用数据库。有人有这方面的经验吗?谢谢 但是,我必须使用infowindowadapter中的AsyncTask调用数据库 绝对不是。在调用GoogleMap上的setInfoWi

我正在尝试使用infowindowadapter将数据获取到google地图信息窗口。问题是某种鸡和蛋类型的问题。由于onPostExecute必须放在UI线程上,因此我需要将infowindowadapter放在onPostExecute方法中。但是,我必须使用infowindowadapter中的AsyncTask调用数据库。有人有这方面的经验吗?谢谢

但是,我必须使用infowindowadapter中的AsyncTask调用数据库

绝对不是。在调用
GoogleMap
上的
setInfoWindowAdapter()
之前,必须已经加载了数据,因为
InfoWindowAdapter
无法异步响应
getInfoContents()
之类的回调

例如,在调用
setInfoWindowAdapter()
,将
光标
(或其他)传递给
InfoWindowAdapter
子类”构造函数之前,执行查询以检索模型数据

我需要将infowindowadapter放在onPostExecute方法中

不,你不需要。在检索到对
GoogleMap
的引用后,通常在
Activity.onCreate
中调用
GoogleMap.setInfoWindowAdapter
。为什么以后需要在任何地方更新
InfoWindowAdapter
?它提供正确的
视图
,使用
标记
参数来感知数据

我必须使用infowindowadapter中的AsyncTask调用数据库

不,你不必这么做。我建议根本不要在那里这样做。而是创建某种模型,在其中保存要在地图上显示的数据。当您第一次调用它获取数据时,它不在内存中,它使用异步作业加载数据,但立即返回null。您还可以在此模型上设置一个观察者,加载完成后,系统会通知您并使用
Marker.showInfoWindow()
刷新信息窗口以使用加载的数据。您的
InfoWindowAdapter
再次被调用,但这次它将获取在内存中兑现的数据


也可以看到这个答案:

但我的查询取决于单击的标记。因此,到那时,InfoWindowAdapter已准备好调用。我怎么能提前知道呢?感谢您的回复。您的回答让我想到创建一个HashMap,在异步任务期间将数据加载到其中。这就是你的想法吗?还有其他的方法吗。HashMap可以工作,但我需要确保数据在应用程序的整个生命周期中都保持不变。@KarlCobb:“这就是你的想法吗?”——类似的,是的。“我需要确保数据在应用程序的整个生命周期中保持不变”——使用静态数据成员作为数据库中所需信息的缓存副本。您可以尝试的另一种可能性是将信息窗口的
视图
传递到
异步任务
中,并更新
onPostExecute()
中的小部件。理想情况下,这是可行的;实际上,我怀疑它不会,因为信息窗口实际上显示的是从您的视图而不是视图本身创建的
位图。谢谢你的回复!!