更改光标会导致异常

时间:2013-01-05 07:40:09

标签: android cursor textwatcher

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

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

列表过滤工作与上面的代码完美相同但是当我点击ListItem时,它使用旧Cursor的OnItemClickListener导致一个异常,它告诉:

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 );

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

1 个答案:

答案 0 :(得分:1)

stopManagingCursor()已弃用,不再推荐使用。您应该使用CursorLoader。然后,您可以使用SimpleCursorAdapterswapCursor(Cursor)方法。

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