0

infowindowadapter を使用して、Google マップの情報ウィンドウにデータを取得しようとしています。問題は、ある種の鶏と卵のタイプの問題です。onPostExecute は UI スレッドに配置する必要があるため、onPostExecute メソッド内に infowindowadapter を配置する必要があります。ただし、infowindowadapter 内から AsyncTask を使用してデータベースを呼び出す必要があります。誰もこれを経験していますか?ありがとう。

4

2 に答える 2

1

ただし、infowindowadapter 内から AsyncTask を使用してデータベースを呼び出す必要があります。

絶対違う。は のようなコールバックに非同期的に応答できないため、を呼び出す前にデータをロードしておく必要があります。setInfoWindowAdapter()GoogleMapInfoWindowAdaptergetInfoContents()

たとえば、クエリを実行して を呼び出す前にモデル データを取得し、サブクラスのコンストラクターに (またはその他setInfoWindowAdapter()のもの) を渡します。CursorInfoWindowAdapter

于 2013-07-01T23:21:11.420 に答える
0

onPostExecute メソッド内に infowindowadapter を配置する必要があります

いいえ、必要ありません。通常は で、GoogleMap.setInfoWindowAdapterへの参照を取得した後に呼び出します。後でどこかで更新する必要があるのはなぜですか? データで感じるパラメータを正しく使用して機能します。GoogleMapActivity.onCreateInfoWindowAdapterViewMarker

infowindowadapter 内から AsyncTask を使用してデータベースを呼び出す必要があります

いいえ、これを行う必要はありません。そこではまったくそれをしないことをお勧めします。代わりに、マップに表示されるデータを保持するモデルを作成します。データを取得するために最初に呼び出したときにメモリ内にない場合、非同期ジョブを使用してデータをロードしますが、すぐに null を返します。また、このモデルにオブザーバーを設定し、ロードが完了すると通知され、Marker.showInfoWindow()ロードされたデータを使用するために情報ウィンドウを更新します。あなたInfoWindowAdapterは再び呼び出されますが、今回はメモリにキャッシュされたデータを取得します。

この回答も参照してください: Maps V2 InfoWindow の動的コンテンツ

于 2013-07-02T21:37:30.620 に答える