У меня есть приложение, которому нужны вкладки с одним списком в содержимом каждой вкладки.Эти списки необходимо обновить несколько раз, не меняя вкладку.Списки представляют собой деревья возможных вариантов выбора, поэтому пользователь, например, щелкает элемент 4, и мне нужно обновить список, чтобы отобразить элементы под 4.
Самый простой (и, вероятно, самый уродливый) способ, который я нашел, чтобы выполнитьэто значит присоединить слушателя к списку «показанных в данный момент» и снова запустить «это» действие (с некоторыми дополнительными функциями, относящимися к элементу, по которому щелкнул пользователь), фактически воссоздав весь вид, вкладки и все остальное.Это позволяет мне сохранять независимость каждого состояния списков и делает поддержку спины достаточно легкой. - Я сказал, что это ужасно!
Чтобы это работало, я создаю вкладки внутри onCreate, например:
TabHost.TabSpec spec1 = tabHost.newTabSpec("TOC").setIndicator("TOC", res.getDrawable(R.drawable.ico_table_of_contents)).setContent(this);
tabHost.addTab(spec1);
TabHost.TabSpec spec2 = tabHost.newTabSpec("BLAH").setIndicator("BLAH", res.getDrawable(R.drawable.blah)).setContent(this);
tabHost.addTab(spec2);
.setContent (this)работает, потому что это действие расширяет TabActivity и реализует TabHost.TabContentFactory.Функция createTabContent возвращает следующее:
return from(this).inflate(R.layout.new_list, getTabHost().getTabContentView(), true);
независимо от того, на какой вкладке я нахожусь. После этого я обновляю список с помощью адаптера, например:
private void updateList(ArrayList<Element> items) {
ElementAdapter adapter = new ElementAdapter(this, R.layout.element, items);
ListView list = (ListView) findViewById(R.id.theListView);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {...}
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
Проблема в том, чточто первая вкладка отлично работает, а вторая нет.Ему нужно такое же представление, как и в первом (список, показывающий список элементов), но в нем ничего не отображается, просто вкладки.ArrayList, который я передаю, имеет элементы в обоих случаях.
Обходя код, я заметил, что в моих createTabs createTabContent называется ONCE, на tabHost.addTab (spec1) (для первой вкладки), но НЕпри добавлении второго.
Что дает?Почему вместо списка отображается пустой экран, если в обоих случаях есть элементы для отображения?
Надеюсь, это имеет смысл.Это странная проблема, чтобы объяснить, и я не уверен, что я имею много смысла.
Будем благодарны за любую помощь.
Спасибо
llappall