Обновления Android для активности ListView

Я новичок в программировании для Android, но не в программировании вообще или Java. Мой вопрос здесь в основном о лучших практиках.

Я создал класс MenuListActivity, который расширяет ListActivity, который показывает элементы меню в списке и запускает другое действие при нажатии. Каждое меню является дочерним классом класса MenuListActivity и реализует метод getMenuItems() для создания пунктов меню.

В моем методе onCreate() я вызываю метод getMenuItems() для создания класса MenuListAdapter, который затем устанавливается в качестве адаптера ListView объекта ListActivity.

Однако иногда я получаю нелегальное исключение StateException, сообщающее мне, что «Содержимое адаптера изменилось, но ListView не получил уведомление». Обратите внимание, что это происходит иногда, не всегда. Переходник ни в какой другой ветке не трогаю, по факту переходник ставится так:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ArrayList<MenuAdapterItem> menuItems = getMenuItems();
    this.setListAdapter(new MenuAdapter(this, menuItems));
}

Еще одна возможность, о которой я могу подумать, - это создать переменную-член адаптера и вызывать notifyDataSetChanged() при каждом обновлении.

Как правильно это сделать? (И, надеюсь, исправить мои сбои ;-)).

С уважением Барт


person Bart Friederichs    schedule 12.01.2012    source источник
comment
Я изменил класс MenuListActivity, чтобы иметь MenuListAdapter в качестве переменной-члена, и сбои, похоже, прекратились.   -  person Bart Friederichs    schedule 16.01.2012


Ответы (1)


я столкнулся с этой проблемой раньше, и я использовал "setNotifyOnChange (true);" надеюсь, это поможет.

person Paul Maserrat    schedule 12.01.2012