我正在尝试以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的内容。
答案 0 :(得分:5)
我发现了这个问题。我的CursorAdapter
实施了SectionIndexer
,因此我必须覆盖changeCursor()
方法并重置Cursor
AlphabetIndexer
。
@Override
public void changeCursor(Cursor cursor) {
mIndexer.setCursor(cursor);
super.changeCursor(cursor);
}
答案 1 :(得分:2)
changeCursor()
将关闭仍然由Activity管理的前一个Cursor,这可能是您获得异常的原因。在致电stopManagingCursor()
之前,您可以尝试在旧光标上调用changeCursor()
。