我在一个对话框中有一个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 );
任何帮助将不胜感激,谢谢
答案 0 :(得分:1)
stopManagingCursor()
已弃用,不再推荐使用。您应该使用CursorLoader
。然后,您可以使用SimpleCursorAdapter
和swapCursor(Cursor)
方法。
如果您需要使用当前设置,则应该能够CpListadapter.getCursor().close()
(例如,在onDestroy()
中)。