java - Filter ListView with SearchView -


ok, so, have following listview adapter:

listviewadapter.java

public class listviewadapter extends cursoradapter{     public listviewadapter(context context, cursor cursor) {         super(context, cursor, 0);     }       @override     public view newview(context context, cursor cursor, viewgroup parent) {         return layoutinflater.from(context).inflate(r.layout.listitem, parent, false);     }       @override     public void bindview(view view, context context, cursor cursor) {         // find fields populate in inflated template         button btnlist = (button) view.findviewbyid(r.id.btnlist);         // populate fields cursor        btnlist.settext(cursor.getstring(0));      } } 

and here xml inflating:

listitem.xml

<?xml version="1.0" encoding="utf-8"?> <button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/btnlist" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/listview_item" android:focusable="false" android:clickable="false" android:focusableintouchmode="false"/> 

and using here give listview contents of cursor:

mainactivity.java

listviewadapter lvadapter = new listviewadapter(this, cursor); listview.setadapter(lvadapter); 

now, how 1 use searchview filter listview everytime change searchview text? (like ontextchange or something)?

i've come far:

searchview.setonquerytextlistener(new searchview.onquerytextlistener() {         @override         public boolean onquerytextsubmit(string query) {             return false;         }          @override         public boolean onquerytextchange(string newtext) {             todoadapter.getfilter().filter(newtext);             return true;         } }); 

but doesn't anything... if need more information feel free ask :)

my layout: my current layout.

i think should use this part project i'm working on here 2 arraylists 1 showprojectlist , projectlist projectlist contains actual data want filter , showprojectlist contains data projectlist filtered , shown.

searchview.addtextchangedlistener(new textwatcher() {                 @override                 public void beforetextchanged(charsequence s, int start, int count, int after) {                  }                  @override                 public void ontextchanged(charsequence s, int start, int before, int count) {                  }                  @override                 public void aftertextchanged(editable s) {                     if (searchview.gettext().tostring().length() == 0) {                         showprojectlist = projectlist;                         projectadapter adapter = new projectadapter(getinstance(), showprojectlist);                         projectlistview.setadapter(adapter);                          noofprojectfoundtextview.settext(showprojectlist.size() + "");                         noprojectfoundlayout.setvisibility(view.gone);                      } else {                         showprojectlist = new arraylist<projectmodel>();                         showprojectlist.clear();                         (int = 0; < projectlist.size(); i++) {                             if (projectlist.get(i).getprojectname()                                     .tostring()                                     .tolowercase()                                     .startswith(                                             searchview.gettext().tostring().tolowercase()) || projectlist.get(i).getprojectname()                                     .tostring()                                     .tolowercase()                                     .contains(                                             searchview.gettext().tostring().tolowercase())) {                                  projectmodel mdata = new projectmodel();                                 mdata.projectid = projectlist.get(i).getprojectid();                                 mdata.itemcount = projectlist.get(i).getitemcount();                                 mdata.projectname = projectlist.get(i).getprojectname();                                 mdata.createddate = projectlist.get(i).createddate;                                 mdata.linfolist = projectlist.get(i).getlinfolist();                                  showprojectlist.add(mdata);                               }                         }                          projectadapter adapter = new projectadapter(getinstance(), showprojectlist);                         projectlistview.setadapter(adapter);                      }                  }             });//search ended 

Comments