尝试使用ExpandableListView和CursorTreeAdapter。这里引用Android手册:
protected abstract Cursor getChildrenCursor(Cursor groupCursor) ... 您有责任通过Activity生命周期管理此Cursor。在某些情况下,适配器会自行停用Cursor,但情况并非总是如此,因此请确保正确管理Cursor。
好的,我在Google上找到了一些例子,并编写了以下代码:
@Override
protected Cursor getChildrenCursor( Cursor groupCursor ) {
int groupID = groupCursor.getInt( groupIDColumn );
Cursor c = dbAdapter.getHostsCursor( "where expression", groupID );
startManagingCursor( c );
return c;
}
此代码有效,但ExpandableListView会在组的每次点击时请求新光标以展开它。将创建新游标并将其添加到Activity的托管游标列表中。
但旧游标会发生什么?在哪里可以关闭旧的,未使用的光标,如果我负责根据Google手册管理游标,请调用stopManagingCursor()?如果有人点击展开和折叠组,那么app会因堆栈溢出或系统资源泄漏而崩溃的速度有多快?
请指出正确的方向。
答案 0 :(得分:0)
考虑以下两种选择:
getChildrenCursor()
返回一个不会长寿的游标。更新UI,然后处理光标。
每个组都有一个光标。
没有优化空间。
选择1 可能是真的