2012-07-31 58 views
0

我的場景如下:我實現了一個tabhost,通過LocalActivityManager顯示兩個選項卡。第一個擁有一個ListView,顯示有關地理位置的位置(這樣的距離,地址名稱......)的信息,在第二個,我有一個MapView實施Google's Map API顯示第一個活動。我不能在同一視圖中將兩個活動作爲一個實現,因爲這兩個活動從不同的類(第一個具有創建自定義菜單的父級,第二個來自MapView)擴展而來,所以可以選擇一項活動不可用。如何在Android中使用TabHost同步listview和mapview

我的問題是:在第一個活動中有一個延遲加載(需求加載內容,當用戶滾動到列表的末尾)功能時,如何使用TabHost方法同步MapView活動中的項目?

我已經說過一些複雜的解決方案,例如使用BroadcastReceiver或創建AIDL,但我正在尋找最簡單的解決方案。我不是在尋找代碼本身,而是爲了完成這項任務。

在此先感謝!

回答

0

我THIK在這種情況下,你需要實現監聽器模式,例如

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) 
    } 

} 
+0

嗨格奧爾基, 我已經使用了父活動(從的ActivityGroup擴展活動)和組合解決了這個的方法Activity:getParent()和Activity:getActivity(StringId)用流類型[child1-> parent-> child2]傳遞數據。 我會接受你的答案,因爲它也是一個很好的答案。謝謝回覆! – mthama 2012-08-02 14:38:00

+0

不客氣。但請記住,ActivityGroup現在已被棄用。 – 2012-08-02 14:41:18