【发布时间】:2012-01-12 14:11:27
【问题描述】:
我是 Android 编程新手,但对一般编程或 Java 不熟悉。我的问题主要是关于最佳实践。
我创建了一个类 MenuListActivity,它扩展了一个 ListActivity,它在列表中显示菜单项并在单击时启动另一个 Activity。每个菜单都是 MenuListActivity 类的子类,并实现 getMenuItems() 方法来创建菜单项。
在我的 onCreate() 方法中,我调用 getMenuItems() 来创建一个 MenuListAdapter 类,然后将其设置为 ListActivity 的 ListView 的适配器。
但是,有时我会收到一个非法状态异常,告诉我“适配器的内容已更改,但 ListView 没有收到通知。”。请注意它有时会发生,而不是所有时间。我没有在任何其他线程中触摸适配器,实际上适配器是这样设置的:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<MenuAdapterItem> menuItems = getMenuItems();
this.setListAdapter(new MenuAdapter(this, menuItems));
}
我能想到的另一种可能性是,创建一个 Adapter 成员变量并在每次更新时调用 notifyDataSetChanged()。
正确执行此操作的方法是什么? (并希望修复我的崩溃 ;-))。
问候 巴特
【问题讨论】:
-
我将 MenuListActivity 类更改为将 MenuListAdapter 作为成员变量,并且崩溃似乎已经停止。
标签: android listview listadapter