我正在尝试使用infowindowadapter将数据传输到谷歌地图信息窗口。问题是某种鸡和蛋类型的问题。由于onPostExecute必须放在UI线程上,我需要将infowindowadapap放在onPostExecute方法中。但是,我必须使用infowindowadapter中的AsyncTask来调用数据库。有任何人对此有经验吗?感谢。
答案 0 :(得分:1)
但是我必须使用infowindowadapter中的AsyncTask来调用数据库。
绝对不是。 <{1}}上的 支持已加载数据,因为 例如,在调用setInfoWindowAdapter()
之后,您必须已经 GoogleMap
无法与InfoWindowAdapter
等回调异步响应。< / p>
getInfoContents()
之前,执行查询以检索模型数据,并将setInfoWindowAdapter()
(或其他)传递给Cursor
子类'构造函数。
答案 1 :(得分:0)
我需要将infowindowadapter放在onPostExecute方法
中
不,你不需要。在检索GoogleMap.setInfoWindowAdapter
的引用后,您通常会在GoogleMap
中致电Activity.onCreate
。为什么以后需要在任何地方更新InfoWindowAdapter
?它使用View
参数提供正确的Marker
,以便感知数据。
我必须使用infowindowadapter中的AsyncTask来调用数据库
不,你没有这样做。我建议不要那样做。而是创建某种模型,在其中保存要在地图上显示的数据。当您第一次调用它来获取数据并且它不在内存中时,它使用异步作业来加载数据,但立即返回null。您还可以在此模型上设置观察者,并在加载完成后通知您,并使用Marker.showInfoWindow()
刷新信息窗口以使用加载的数据。再次调用InfoWindowAdapter
,但这次它会获取在内存中兑现的数据。