Попытка использовать ExpandableListView и CursorTreeAdapter. Вот цитата из руководства Android:
защищенный абстрактный Курсор getChildrenCursor (Курсор groupCursor)
...
Вы несете ответственность за управление этим курсором в течение жизненного цикла. В некоторых ситуациях адаптер деактивирует Курсор сам по себе, но это не всегда так, поэтому убедитесь, что Курсор правильно управляется.
Хорошо, я нашел в 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.
Но что происходит со старыми курсорами? Где я могу закрыть старый, неиспользуемый курсор, вызвать stopManagingCursor (), если я отвечаю за управление курсорами в соответствии с руководством Google? Если кто-то нажмет, чтобы развернуть и свернуть группы, как быстро приложение упадет из-за переполнения стека или другой утечки системных ресурсов?
Пожалуйста, укажите мне правильное направление.