java - Search suggestion throwing error -


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