我正在尝试使用 infowindowadapter 将数据获取到谷歌地图信息窗口。问题是某种鸡和蛋类型的问题。由于 onPostExecute 必须放在 UI 线程上,我需要将 infowindowadapter 放在 onPostExecute 方法中。但是,我必须使用 infowindowadapter 中的 AsyncTask 调用数据库。这个事情谁有经验?谢谢。
2 回答
但是,我必须使用 infowindowadapter 中的 AsyncTask 调用数据库。
绝对不。在调用之前setInfoWindowAdapter()
,您必须已经加载了数据GoogleMap
,因为InfoWindowAdapter
无法异步响应getInfoContents()
.
例如,在调用之前进行查询以检索模型数据setInfoWindowAdapter()
,将Cursor
(或其他)传递给InfoWindowAdapter
子类的构造函数。
我需要将 infowindowadapter 放在 onPostExecute 方法中
不,你不需要。您GoogleMap.setInfoWindowAdapter
在检索到 的引用后调用GoogleMap
,通常在Activity.onCreate
. 为什么以后需要在InfoWindowAdapter
任何地方更新?它提供正确的View
使用Marker
参数来感受数据。
我必须使用 infowindowadapter 中的 AsyncTask 调用数据库
不,你没有这样做。我建议不要在那里这样做。而是创建某种模型,在其中保存要在地图上显示的数据。当您第一次调用它来获取数据并且它不在内存中时,它会使用异步作业来加载数据,但会立即返回 null。您还在此模型上设置了一个观察者,当加载完成时,您会收到通知并刷新信息窗口Marker.showInfoWindow()
以使用加载的数据。再次调用您InfoWindowAdapter
的,但这次它获取的是在内存中兑现的数据。
另请参阅此答案:Maps V2 InfoWindow 中的动态内容