我正在编写一个Android应用程序(目标是Androidver2.1up)。我使用的是ExpandableListView和SimpleCursorTreeAdapter。我发现它会按照这样的顺序崩溃:
ExpandableListView启动为空(即数据库中没有相应的记录)。ExpandableListView返回到屏幕。现在,显示组(S)。经过数天的互联网搜索,然后痛苦地追踪我的应用程序的源代码,然后是Android的平台源代码,
的问题似乎是:当平台启动iSimpleCursorTreeAdapter时,
它将在实例化期间将子字段列表存储在私有成员mChildFrom中一次,在至少有一个组的条件下将子字段列表存储在(奇怪的是)中,条件是。如果没有记录(因此没有组),则不存储子字段列表。当随后添加记录和将组展开为显示的子行时,ExpandableListView将崩溃,因为私有成员mChildFrom为null。
因此,我现在要了解的是:只有在数据库中有相关记录的情况下,才会实例化SimpleCursorTreeAdapter。如果没有,请在OnResume()期间重试实例化。
如果有人有更好的理由或有更好的解决方案,这将对我(或其他有同样问题的穷人)有帮助。(我倾向于相信这是Android平台上的一个bug。)
发布于 2011-06-17 10:24:22
试试看以下几点。在onCreate()中实例化适配器,但传递null作为游标参数。然后在onResume()中创建新的游标,并使用changeCursor()将其传递给适配器。这样,每当您更改数据模型上的任何内容(添加、删除、编辑行)时,都会得到一个新的游标。
https://stackoverflow.com/questions/6383766
复制相似问题