0

我的场景如下:我正在实现一个通过LocalActivityManager显示两个选项卡的选项卡主机。第一个包含一个ListView,它显示有关地理定位位置的信息(例如距离、地址名称......),在第二个中,我有一个MapView实现Google 的 Map API,它显示第一个活动中的各个项目。我不能在同一个视图中将这两个活动作为一个来实现,因为这两个活动从不同的类扩展(第一个有一个创建自定义菜单的父级,第二个来自 MapView),所以可以选择在一项活动不可用。

我的问题是:在第一个活动中具有延迟加载(按需加载内容,当用户滚动到列表末尾时)功能,如何使用 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 回答