如何在Android中与TabHost同步listview和mapview

如何在Android中与TabHost同步listview和mapview,android,listview,android-mapview,android-tabhost,Android,Listview,Android Mapview,Android Tabhost,我的场景如下:我正在实现一个tabhost,它通过LocalActivityManager显示两个选项卡。第一个包含一个列表视图,其中显示了有关地理位置的信息(例如距离、地址名称……),第二个包含一个地图视图,其中显示了第一个活动中的各个项目。在同一个视图中,我不能将两个活动作为一个来实现,因为这两个活动从不同的类扩展而来(第一个活动有一个创建自定义菜单的父类,第二个活动来自MapView),所以在一个活动中执行所有操作的选项不可用 我的问题是:在第一个活动中有一个延迟加载(当用户滚动到列表末尾

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

我的问题是:在第一个活动中有一个延迟加载(当用户滚动到列表末尾时按需加载内容)功能,如何使用TabHost方法在MapView活动中同步其项目

我已经说明了一些复杂的解决方案,例如使用广播接收器或创建AIDL,但我正在寻找最简单的解决方案。我不是在寻找代码本身,而是一个完成这项任务的计划


提前谢谢

例如,我认为在这种情况下,您需要实现侦听器模式

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

}
公共接口MapDataLoadingListener{
已加载MapDataLoaded(列表dataList)的公共void;
}
公共类YourListActivity扩展了活动{
...
//在某个地方你推你的懒负载任务
UpdateListTask=新的UpdateListTask();
task.setMapDataListener(//您的映射活动)
task.execute();
...
}
公共类YourMapActivity扩展MapActivity实现MapDataLoadingListener{
...
已加载MapDataLoaded(列表dataList)的公共void{
更新映射(数据列表);
}
...
私有无效更新映射(列表数据列表){
...
}
}
公共类UpdateListTask扩展了AsyncTask{
私有MapDataLoadingListener mapDataListener;
公共void setMapDataListener(MapDataLoadingListener mapDataListener){
this.mapDataListener=mapDataListener;
}
...
@凌驾
受保护的void onPostExecute(对象结果){
mapDataListener.onMapDataLoaded((列表)结果)
}
}

Hi Georgy,我已经通过使用父活动(从ActivityGroup扩展而来的活动)以及Activity:getParent()和Activity:getActivity(StringId)方法的组合来传递流类型为[child1->parent->child2]的数据,解决了这个问题。我会接受你的答案,因为这也是一个非常好的答案。谢谢你的回复!不客气。但请记住,ActivityGroup现在是不推荐的类。