如何解决当适配器也有 setViewBinder 时,用 FilterQueryProvider 过滤 SimpleCursorAdapter 不起作用
我有一个 SimpleCursorAdapter
,它有一个 ViewBinder
用于图像色调和 FilterQueryProvider
用于搜索功能。在我添加 ViewBinder
之前搜索工作正常,但是当我添加 ViewBinder
时它不起作用。这是我搜索时遇到的错误:
An exception occured during performFiltering()!
java.lang.IllegalStateException: attempt to re-open an already-closed object: sqliteDatabase: /data/user/0/com.nima.note/databases/Note
at android.database.sqlite.sqliteClosable.acquireReference(sqliteClosable.java:55)
at android.database.sqlite.sqliteDatabase.queryWithFactory(sqliteDatabase.java:1234)
at android.database.sqlite.sqliteDatabase.query(sqliteDatabase.java:1110)
at android.database.sqlite.sqliteDatabase.query(sqliteDatabase.java:1278)
at com.nima.note.AdapterProvider$2.runQuery(AdapterProvider.java:100)
at android.widget.CursorAdapter.runQueryOnBackgroundThread(CursorAdapter.java:432)
at android.widget.CursorFilter.performFiltering(CursorFilter.java:49)
at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
我想知道它是否与ViewBinder
有关。 setViewBinder
是否关闭 Cursor
或数据库?我应该如何将这两个功能一起使用?
编辑:如果这段代码有助于回答问题
simpleAdapter = new SimpleCursorAdapter(context,R.layout.note_list_item,listNotesCursor,new String[]{"DATE","TAG","TITLE","TAG"},new int[]{R.id.date_list_view,R.id.tag_list_item,R.id.title_list_view,R.id.list_note_tag_image},0);
simpleAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view,Cursor cursor,int i) {
if (view.getId() == R.id.list_note_tag_image){
((ImageView) view).setColorFilter(getTagColor(cursor.getString(3),handler));
return true;
}
return false;
}
});
simpleAdapter.setFilterQueryProvider(new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence charSequence) {
if (charSequence == null || charSequence.length() == 0) {
return listNotesCursor;
}//line below is line 100 which the error is pointing at
listNotesCursor = readableListNotes.query("NOTES",new String[]{"_id","TEXT","DATE"},"TITLE LIKE ?",new String[]{charSequence.toString()},null,null);
return listNotesCursor;
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。