i working on local search suggestion in app. have create search interface using search widget interacting searchable activity.
the problem starts when modify code display suggestions. content provide child class created as:
public class searchsuggester extends contentprovider { @override public boolean oncreate() { return false; } @override public cursor query(uri uri, string[] projection, string selection, string[] selectionargs, string sortorder) { if(selectionargs!=null && selectionargs.length>0 && selectionargs[0]!=null) { // return cursor return new sqliteintegrator(getcontext()).getsearchmatch(selectionargs[0]); } else { return null; } } @override public string gettype(uri uri) { return null; } @override public uri insert(uri uri, contentvalues values) { return null; } @override public int delete(uri uri, string selection, string[] selectionargs) { return 0; } @override public int update(uri uri, contentvalues values, string selection, string[] selectionargs) { return 0; } } sqliteintegrator class interacts database.
public class sqliteintegrator extends sqliteopenhelper { context mcontext; public sqliteintegrator(context applicationcontext) { super(applicationcontext, "suggestiondb.db", null, 2); this.mcontext=applicationcontext; } public cursor getsearchmatch(string catname) { sqlitedatabase database=getreadabledatabase(); string pluralsearch="upper(cat_name) '% "+catname.touppercase()+"s %' or upper(cat_name) '"+catname.touppercase()+"s %' or upper(cat_name) '% "+catname.touppercase()+"s' or upper(cat_name)='"+catname.touppercase()+"s'"; string searchquery="select * catsuggestion upper(cat_name) '% "+catname.touppercase()+" %' or upper(cat_name) '"+catname.touppercase()+" %' or upper(cat_name) '% "+catname.touppercase()+"' or upper(cat_name)='"+catname.touppercase()+"' or "+pluralsearch; return database.rawquery(searchquery,null); } the program throwing error:
e/suggestionsadapter﹕ error changing cursor , caching columns java.lang.illegalargumentexception: column '_id' not exist @ android.database.abstractcursor.getcolumnindexorthrow(abstractcursor.java:303) @ android.database.cursorwrapper.getcolumnindexorthrow(cursorwrapper.java:78) @ android.widget.cursoradapter.swapcursor(cursoradapter.java:342) @ android.widget.cursoradapter.changecursor(cursoradapter.java:313) @ android.widget.suggestionsadapter.changecursor(suggestionsadapter.java:264) @ android.widget.cursorfilter.publishresults(cursorfilter.java:67) @ android.widget.filter$resultshandler.handlemessage(filter.java:282) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:135) @ android.app.activitythread.main(activitythread.java:5257) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698) i using database table catsuggestion having 3 fields cat_id,cat_parentid,cat_name . haven't used sqlquerybuilder setprojection though don't know how existing table.
please help.
Comments
Post a Comment