0

私のシナリオは次のとおりです。LocalActivityManagerを介して2つのタブを表示するタブホストを実装しています。1つ目は地理的にローカライズされた位置に関する情報(距離、住所名など)を表示するListViewを保持し、2つ目は最初のアクティビティ内のそれぞれのアイテムを表示するGoogleのMapAPIを実装するMapViewを持っています。2つは異なるクラスから拡張されているため(最初のアクティビティにはカスタムメニューを作成する親があり、2番目のアクティビティはMapViewからのものであるため)、同じビューで両方のアクティビティを1つとして実装することはできません。 1つのアクティビティは利用できません。

私の問題は、最初のアクティビティで遅延読み込み(ユーザーがリストの最後までスクロールしたときにコンテンツをオンデマンドで読み込む)機能がある場合、TabHostメソッドを使用してMapViewアクティビティでアイテムを同期するにはどうすればよいですか?

BroadcastReceiverの使用やAIDLの作成など、いくつかの複雑なソリューションについてはすでに説明しましたが、可能な限り最も単純なソリューションを探しています。私はコード自体を探しているのではなく、このタスクを実行する計画を探しています。

前もって感謝します!

4

1 に答える 1

0

この場合、たとえばリスナーパターンを実装する必要があると思います

 public interface MapDataLoadingListener{
    public void onMapDataLoaded(List<MapData> dataList);
}

public class YourListActivity extends Activity{

    ...

    // somewhere you push yoy lazy load task
    UpdateListTask task = new UpdateListTask();
    task.setMapDataListener(// your map activity)
    task.execute();
    ...
}


public class YourMapActivity extends MapActivity implements MapDataLoadingListener {

     ...

     public void onMapDataLoaded(List<MapData> dataList){
        updateMap(dataList); 
     }

    ...

    private void updateMap(List<MapData> dataList){
        ...
    }

}


public class UpdateListTask extends AsyncTask {

    private MapDataLoadingListener mapDataListener;

    public void setMapDataListener(MapDataLoadingListener mapDataListener){
        this.mapDataListener = mapDataListener;
    }

    ...

    @Override
    protected void onPostExecute(Object result) {
       mapDataListener.onMapDataLoaded((List<MapData>) result)
    }

}
于 2012-08-01T21:16:18.230 に答える