0

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

4

2 回答 2

1

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

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

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

于 2013-07-01T23:21:11.420 回答
0

我需要将 infowindowadapter 放在 onPostExecute 方法中

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

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

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

另请参阅此答案:Maps V2 InfoWindow 中的动态内容

于 2013-07-02T21:37:30.620 回答