Android ExpandableListView SimpleCursorTreeAdapter启动为空将崩溃

时间:2011-06-17 09:21:41

标签: android expandablelistview android-cursoradapter

我正在编写一个Android应用程序(目标是Android版本2.1)。我使用ExpandableListViewSimpleCursorTreeAdapter。我发现它会按照这个顺序崩溃:

  1. ExpandableListView启动为空(即数据库中没有相应的记录)。
  2. 添加了记录。
  3. 使用ExpandableListView返回到屏幕。现在,显示组。
  4. 单击要展开的组,将强制关闭活动。
  5. 经过几天的互联网搜索,然后痛苦地追踪我的应用程序源代码,然后是Android的平台源代码,似乎问题是:当Android平台发起它时{{1}它会在实例化期间将子字段列表存储在私有成员SimpleCursorTreeAdapter中,并且(奇怪地) ON条件如果至少有一个组。如果没有记录(因此没有组),则不存储子字段列表。随后添加记录以及将组扩展到显示的子行时,mChildFrom将崩溃,因为私有成员ExpandableListView为空。

    所以,我现在的好处是:如果数据库中有相关记录,则只实例化mChildFrom。如果没有,请在SimpleCursorTreeAdapter期间重试实例化。

    如果有人有更好的崩溃原因,或者有更好的解决方案,那对我(或其他有相同问题的穷人)会有所帮助。 (我倾向于认为它是Android平台中的一个错误。)

1 个答案:

答案 0 :(得分:0)

尝试以下方法。在onCreate()中实例化适配器,但将null作为游标参数传递。在onResume()中,然后创建新的Cursor并使用changeCursor()将其传递给适配器。通过这种方式,每当您在数据模型上更改任何内容(添加,删除,编辑行)时,总会得到一个新光标。