baseadapter - Android Custom listView Adapter Filter not going back to original list -


i have edited adapter class , extended filterable class. search functionality works unable go original content if backspace in search menu.

here adapter class:

public class menu_list_item_adapter extends baseadapter implements filterable { context context; list<foodmenurowitem> rowitems;  public menu_list_item_adapter(context context, list<foodmenurowitem> items) {     this.context = context;     this.rowitems = items; }    private class viewholder {     imageview imageview;     textview txttitle;     textview txtdesc; }  @override public view getview(int position, view convertview, viewgroup parent) {     viewholder holder = null;      layoutinflater minflater = (layoutinflater) context             .getsystemservice(activity.layout_inflater_service);     if (convertview == null) {         convertview = minflater.inflate(r.layout.food_menu_item_list_row,                 null);         holder = new viewholder();         holder.txtdesc = (textview) convertview.findviewbyid(r.id.price);         holder.txttitle = (textview) convertview                 .findviewbyid(r.id.description);         holder.imageview = (imageview) convertview.findviewbyid(r.id.img);         convertview.settag(holder);     } else {         holder = (viewholder) convertview.gettag();     }      foodmenurowitem rowitem = (foodmenurowitem) getitem(position);      holder.txtdesc.settext(rowitem.getdesc());     holder.txttitle.settext(rowitem.gettitle());     holder.imageview.setimageresource(rowitem.getimageid());      return convertview; }  @override public int getcount() {     return rowitems.size(); }  @override public object getitem(int position) {     return rowitems.get(position); }  @override public long getitemid(int position) {     return rowitems.indexof(getitem(position)); }  @override public filter getfilter() {     return new filter() {         @suppresswarnings("unchecked")         @override         protected void publishresults(charsequence constraint,                 filterresults results) {              if (results.count == 0)                 notifydatasetinvalidated();             else {                 rowitems = (list<foodmenurowitem>) results.values;                 menu_list_item_adapter.this.notifydatasetchanged();             }          }          @override         protected filterresults performfiltering(charsequence constraint) {              filterresults results = new filterresults();              if (constraint == null || constraint.length() == 0) {                 // no filter implemented return list                 results.values = rowitems;                 results.count = rowitems.size();              } else { // perform filtering operation                 list<foodmenurowitem> filteredrowitems = new arraylist<foodmenurowitem>();                  (foodmenurowitem p : rowitems) {                     if (p.getname()                             .touppercase()                             .startswith(constraint.tostring().touppercase())) {                         filteredrowitems.add(p);                     }                 }                 results.values = filteredrowitems;                 results.count = filteredrowitems.size();             }             return results;         }     }; } 

}

i check if results 0 or null , if return original list? missing?

you should store rowitems it, , after getting empty text on search area, should restore array rowitems adapter can reload itself. like:

public class menu_list_item_adapter extends baseadapter implements filterable { context context; list<foodmenurowitem> rowitems; list<foodmenurowitem> storedrowitems;  public menu_list_item_adapter(context context, list<foodmenurowitem> items) { this.context = context; this.rowitems = items; this.storedrowitems = new list<foodmenurowitem>(items); }     // ...  @override public filter getfilter() { return new filter() {     @suppresswarnings("unchecked")     @override     protected void publishresults(charsequence constraint,             filterresults results) {          if (results.count == 0)             notifydatasetinvalidated();         else {             rowitems = (list<foodmenurowitem>) results.values;             menu_list_item_adapter.this.notifydatasetchanged();         }      }      @override     protected filterresults performfiltering(charsequence constraint) {          filterresults results = new filterresults();          if (constraint == null || constraint.length() == 0) {             // no filter implemented return list             results.values = storedrowitems;             results.count = storedrowitems.size();          } else { // perform filtering operation             list<foodmenurowitem> filteredrowitems = new arraylist<foodmenurowitem>();              rowitems = storedrowitems;             (foodmenurowitem p : rowitems) {                 if (p.getname()                         .touppercase()                         .startswith(constraint.tostring().touppercase())) {                     filteredrowitems.add(p);                 }             }             results.values = filteredrowitems;             results.count = filteredrowitems.size();         }         return results;     } }; } 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -