强制TabSpec中的活动更新其视图?

时间:2011-02-15 04:04:05

标签: android android-tabhost

我有一个电视指南活动,它扩展了TabActivity。选项卡标有(示例)...

Today|Wed|Thu|Fri|Sat|Sun|Mon

每个TabHost.TabSpec内容设置为另一个活动(GuideListActivity),它扩展了ListActivity,如此...

private void AddGuideTab(String tag, String indicator, String startDate, String endDate) {
    Intent intent = new Intent().setClass(this, GuideListActivity.class);

    // Set other Intent stuff

    TabHost.TabSpec spec = tabHost.newTabSpec(tag).setIndicator(indicator).setContent(intent);
    tabHost.addTab(spec);
}

这给了我一个频道的所有电视节目的7天列表。到目前为止一切都很好。

问题是当用户想要查看其他频道的列表时,如何干净地重新创建所有这些....

我有一个按钮,用户可以按这个按钮创建一个弹出“通道选择器”对话框。该对话框正确返回新的通道名称/编号,但我无法弄清楚如何删除每个TabSpec / GuideListActivity以便重新启动,也无法告诉现有的GuideListActivity它需要重新填充其ListView。

我错过了什么?我似乎正在阅读文档的各个圈子。

2 个答案:

答案 0 :(得分:1)

如果我的要求正确,那么对于显示Activity的单个ListView。如果需要刷新ListView数据更新,则必须调用Adapter ListView notifyDataSetChanged()函数。这将告诉ListView再次重新创建视图。

((BaseAdapter)(listView.getAdapter())).notifyDataSetChanged();

答案 1 :(得分:0)

我的主要问题是如何通知每个GuideListActivity频道已被更改。

我通过在GuideListActivity中创建一个嵌套类来解决这个问题,该类扩展了BroadcastReceiver,TabActivity现在使用sendStickyBroadcast();来发送包含当前频道选择的粘性Intent。每次恢复GuideListAvtivity时,如果频道选择已更改,它可以检查粘性Intent并调整其ListView。