我有3个标签的tabhost。
歌曲名单,新歌和最喜欢的歌曲在每个标签中,我的内容都是linearlayout。在linearlayout里面我有listview。
这是我的代码..
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_fragment_one, container, false);
TabHost host = (TabHost) rootView.findViewById(R.id.tabHost);
host.setup();
dbHelper = new FragmentOne_DbAdapter(getActivity());
dbHelper.open();
//Clean all data
//dbHelper.deleteAllPlayer1();
//Add some data
dbHelper.insertPlayer1Songlist();
//Generate ListView from SQLite Database
//Tab 1
TabHost.TabSpec spec = host.newTabSpec("SONG LIST");
spec.setContent(R.id.tab1);
spec.setIndicator("SONG LIST");
host.addTab(spec);
listView = (ListView) rootView.findViewById(R.id.slPlayer1ListView);
player1ESearch = (EditText) rootView.findViewById(R.id.player1Search);
ImageButton dplayer1ESearch=(ImageButton) rootView.findViewById(R.id.delete);
dplayer1ESearch.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
player1ESearch.setText("");
}
});
displayPlayer1ListView();
//Tab 2
spec = host.newTabSpec("NEW SONGS");
spec.setContent(R.id.tab2);
spec.setIndicator("NEW SONGS");
host.addTab(spec);
listViewNew = (ListView) rootView.findViewById(R.id.slPlayer1NewListView);
displayPlayer1NewListView();
//Tab 3
spec = host.newTabSpec("FAVORITES");
spec.setContent(R.id.tab3);
spec.setIndicator("FAVORITES");
host.addTab(spec);
return rootView;
}
private void displayPlayer1ListView() {
Cursor cursor = dbHelper.fetchAllPlayer1();
FragmentOneAdapter = new FragmentOne_Adapter(getActivity(), cursor, 0);
listView.setAdapter(FragmentOneAdapter);
player1ESearch.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
FragmentOneAdapter.getFilter().filter(s.toString());
}
});
FragmentOneAdapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return dbHelper.fetchPlayer1ByTitle(constraint.toString());
}
});
}
private void displayPlayer1NewListView() {
Cursor cursor = dbHelper.fetchAllPlayer1New();
FragmentOneAdapterNew = new FragmentOne_AdapterNew(getActivity(), cursor, 0);
listViewNew.setAdapter(FragmentOneAdapterNew);
}
每次单击选项卡时,如何刷新选项卡内容?
在我的第一个标签SONG LIST中,
我更新了一些数据字段,
然后当我查看NEW SONGS标签时,
更新应该出现在列表中..
我需要的只是在每次单击“新歌”选项卡时调用查询或刷新页面。这样它就会重新加载并更新内容。
谢谢!
答案 0 :(得分:2)
实际上问题是您的活动已经呈现,在您的情况下,您希望每当列表中的用户选项卡刷新您的项目。 您可以通过以下方式完成此操作:
1)覆盖类中的OnResume()
方法,而不是在此生命周期方法中添加获取和更新UI的项目代码。
2)在设置选项卡时添加tabhost Intent.FLAG_ACTIVITY_CLEAR_TOP
。
i.e
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("First Text")
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
.setContent(new Intent(this, class1.class)));
答案 1 :(得分:0)