android - How could i filter the listview using baseadapter -


i trying filter listview getfilter method not working,

here code:

@override public void aftertextchanged(editable s) { }  @override public void beforetextchanged(charsequence s, int start, int count, int after) { }  @override public void ontextchanged(charsequence s, int start, int before, int count) {     mhistoryadapter.getfilter().filter(s);    } 

i have added method in baseadapter also

public filter getfilter() {     return null; } 

but not working..could me out..@thanks

mainactivity.java

public class mainactivity extends activity {  private listview mlistview; private customadapter mcustomadapter; private edittext medittext; private arraylist<contacts> _contacts = new arraylist<contacts>();  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.main);      (int = 0; < 100; i++) {         contacts contacts = new contacts();         contacts.setid(""+i);         contacts.setname("name "+i);         _contacts.add(contacts);     }       mlistview = (listview) findviewbyid(r.id.listview1);     medittext = (edittext) findviewbyid(r.id.edittext1);      mcustomadapter = new customadapter(mainactivity.this, _contacts);     mlistview.setadapter(mcustomadapter);      medittext.addtextchangedlistener(new textwatcher() {          @override         public void ontextchanged(charsequence arg0, int arg1, int arg2, int arg3) {             mcustomadapter.getfilter().filter(arg0);         }          @override         public void beforetextchanged(charsequence arg0, int arg1, int arg2,                 int arg3) {         }          @override         public void aftertextchanged(editable arg0) {          }     }); }  } 

customadapter.java

public class customadapter extends baseadapter implements filterable{  private arraylist<contacts> _contacts; private activity context; private layoutinflater inflater; private valuefilter valuefilter; private arraylist<contacts> mstringfilterlist;  public customadapter(activity context, arraylist<contacts> _contacts) {     super();     this.context = context;     this._contacts = _contacts;     mstringfilterlist =  _contacts;     this.inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service);      getfilter(); }  @override public int getcount() {     return _contacts.size(); }  @override public object getitem(int position) {     return _contacts.get(position).getname(); }  @override public long getitemid(int position) {     return 0; }  public class viewholder {     textview tname, tplace; }  @override public view getview(int position, view convertview, viewgroup parent) {     viewholder holder;     if (convertview == null) {         holder = new viewholder();         convertview = inflater.inflate(r.layout.activity_main, null);         holder.tname = (textview) convertview.findviewbyid(r.id.textview1);         holder.tplace = (textview) convertview.findviewbyid(r.id.textview2);         convertview.settag(holder);     } else         holder = (viewholder) convertview.gettag();     holder.tname.settext("" + _contacts.get(position).getname());     holder.tplace.settext("" + "" + _contacts.get(position).getid());     return convertview; }  @override public filter getfilter() {     if(valuefilter==null) {          valuefilter=new valuefilter();     }      return valuefilter; } private class valuefilter extends filter {      //invoked in worker thread filter data according constraint.     @override     protected filterresults performfiltering(charsequence constraint) {         filterresults results=new filterresults();         if(constraint!=null && constraint.length()>0){             arraylist<contacts> filterlist=new arraylist<contacts>();             for(int i=0;i<mstringfilterlist.size();i++){                 if((mstringfilterlist.get(i).getname().touppercase())                         .contains(constraint.tostring().touppercase())) {                     contacts contacts = new contacts();                     contacts.setname(mstringfilterlist.get(i).getname());                     contacts.setid(mstringfilterlist.get(i).getid());                     filterlist.add(contacts);                 }             }             results.count=filterlist.size();             results.values=filterlist;         }else{             results.count=mstringfilterlist.size();             results.values=mstringfilterlist;         }         return results;     }       //invoked in ui thread publish filtering results in user interface.     @suppresswarnings("unchecked")     @override     protected void publishresults(charsequence constraint,             filterresults results) {         _contacts=(arraylist<contacts>) results.values;         notifydatasetchanged();     } } } 

contacts.java

public class contacts {  private string name; private string id;  public string getname() {     return name; } public void setname(string name) {     this.name = name; } public string getid() {     return id; } public void setid(string id) {     this.id = id; } } 

main.xml

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >  <edittext     android:id="@+id/edittext1"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:ems="10" >      <requestfocus /> </edittext>  <listview     android:id="@+id/listview1"     android:layout_width="match_parent"     android:layout_height="wrap_content" > </listview> 

activity_main.xml

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginbottom="2dp" android:layout_marginleft="1dp" android:layout_marginright="1dp" android:layout_margintop="2dp" android:background="@android:color/black" android:gravity="center_vertical" android:paddingbottom="2dp" android:paddingtop="2dp" tools:context=".mainactivity" >   <textview     android:id="@+id/textview1"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_marginleft="8dp"     android:text="large text"     android:textappearance="?android:attr/textappearancelarge"     android:textcolor="@android:color/white" />  <textview     android:id="@+id/textview2"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_marginleft="8dp"     android:text="small text"     android:textappearance="?android:attr/textappearancesmall"     android:textcolor="@android:color/white" /> 

this sample project code. use code you


Comments

Popular posts from this blog

javascript - JS causing window size to be bigger than necessary - Dropdown bug -

How to mention the localhost in android -

php - Calling a template part from a post -