问题描述
我有一个 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 (将#修改为@)