0

我在对话框中有一个 ListView 和一个 EditText 来过滤我的 CustomerCodes 列表,我已经使用 TextWatcher 实现了我的过滤查询,并且在 onTextChanged() 中我已经用

Cursor FilteredCPCodeList = CustomerDBAdapter.instance.CursorFilteredCPCode(s.toString());  //Retrieve Filtered CustomerCodeList
CpListadapter.changeCursor(FilteredCPCodeList);

列表过滤与上面的代码完美结合,但是当我单击 ListItem 时,它是 OnItemClickListener ,它使用旧的 Cursor 导致异常,它告诉:

01-05 10:33:01.577: E/AndroidRuntime(5380): android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: cursor is deactivated prior to calling this method.

我知道更改光标会关闭我的旧光标,但我不知道如何在旧光标(或其他解决方案)上使用 StopManagingCursor 来解决这个问题。我在 onTextChanged() 上尝试过这段代码,但它没有要么工作

Cursor OldCursor = CpListadapter.getCursor();
stopManagingCursor(OldCursor );

任何帮助将不胜感激,谢谢

4

1 回答 1

1

stopManagingCursor()已弃用,不再推荐。你应该使用CursorLoader. 然后,您可以使用 aSimpleCursorAdapter与该swapCursor(Cursor)方法一起使用。

如果您需要使用当前设置,您应该能够做到CpListadapter.getCursor().close()(例如,在您的onDestroy().

于 2013-01-05T07:52:09.860 回答