我有一个电视指南活动,它扩展了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。
我错过了什么?我似乎正在阅读文档的各个圈子。
答案 0 :(得分:1)
如果我的要求正确,那么对于显示Activity
的单个ListView
。如果需要刷新ListView
数据更新,则必须调用Adapter
ListView
notifyDataSetChanged()
函数。这将告诉ListView
再次重新创建视图。
((BaseAdapter)(listView.getAdapter())).notifyDataSetChanged();
答案 1 :(得分:0)
我的主要问题是如何通知每个GuideListActivity频道已被更改。
我通过在GuideListActivity中创建一个嵌套类来解决这个问题,该类扩展了BroadcastReceiver,TabActivity现在使用sendStickyBroadcast();
来发送包含当前频道选择的粘性Intent。每次恢复GuideListAvtivity时,如果频道选择已更改,它可以检查粘性Intent并调整其ListView。