Изменение курсора в CursorAdapter - PullRequest
4 голосов
/ 30 августа 2011

Я пытаюсь изменить Cursor в CursorAdapter таким образом:

Cursor newCursor = compiledStatement.getCursor();
startManagingCursor(newCursor);
adapter.changeCursor(newCursor);

К сожалению, я получаю это исключение:

java.lang.IllegalStateException: attempt to re-open an already-closed object:
     android.database.sqlite.SQLiteQuery

Согласно другим темам, должна быть возможность изменить содержимое CursorAdapter без создания нового.

Ответы [ 2 ]

5 голосов
/ 31 августа 2011

Я нашел проблему. Мой CursorAdapter реализует SectionIndexer, поэтому мне пришлось переписать метод changeCursor() и сбросить Cursor для AlphabetIndexer.

@Override
public void changeCursor(Cursor cursor) {
    mIndexer.setCursor(cursor);
    super.changeCursor(cursor);
}
2 голосов
/ 30 августа 2011

changeCursor() закроет предыдущий Курсор, который все еще управляется Деятельностью, что, вероятно, является причиной того, что вы получаете исключение.Вы можете попытаться вызвать stopManagingCursor() на старом курсоре, прежде чем вызывать changeCursor().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...