database - Android listview filter without pressing search button issue -


i have listview work fine. have put edittext @ top of listview. want when enters letter "a", names starting "a" should appear in list . have try nothing happen please check code , tell me doing wrong.

this code of data list.

public class datalistactivity extends activity  {  listview listview; sqlitedatabase sqlitedatabase; fooddbhelper fooddbhelper; cursor cursor; listdataadapter listdataadapter; private button button1; listdataadapter dataadapter = null; button button; dataprovider dataprovider; arraylist<hashmap<string, string>> namesslist; edittext inputsearch; string search_name; @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     requestwindowfeature(window.feature_no_title);     setcontentview(r.layout.data_list_layout);         inputsearch = (edittext)findviewbyid(r.id.inputsearch);       inputsearch.addtextchangedlistener(new textwatcher() {          @override         public void ontextchanged(charsequence cs, int arg1, int arg2, int arg3) {             // when user changes text             listdataadapter.getfilter().filter(cs);         }          @override         public void beforetextchanged(charsequence arg0, int arg1, int arg2,                                       int arg3) {             // todo auto-generated method stub          }          @override         public void aftertextchanged(editable arg0) {             // todo auto-generated method stub         }     });       listview = (listview) findviewbyid(r.id.list_view);      listdataadapter = new listdataadapter(getapplicationcontext(),             r.layout.row_layout) {             @override         protected void showcheckedbutton(int position, boolean value) {             // todo auto-generated method stub              dataprovider item = (dataprovider) listdataadapter                     .getitem(position);             log.i("", "");              item.setselected(value);              button mybutton = (button) findviewbyid(r.id.findselected);             mybutton.setonclicklistener(new view.onclicklistener() {                  @override                 public void onclick(view v) {                      stringbuffer responsetext = new stringbuffer();                     responsetext                            .append("the following dishes selected...\n");                      arraylist<dataprovider> list = listdataadapter                             .getselectedindexes();                      int sum = 0;                     (int = 0; < list.size(); i++) {                         dataprovider dataprovider = list.get(i);                          sum = sum + dataprovider.getcalorie();                          responsetext.append("\n" + dataprovider.getname()                                 + " : " + dataprovider.getcalorie()                                 + " kcal"                                 );                      }                      toast.maketext(getapplicationcontext(), ""+responsetext+"\n"+"................................."                                    +"\n"+"total calories in menu : " +sum,                             toast.length_long).show();                  }             });              }          };     listview.setadapter(listdataadapter);     fooddbhelper = new fooddbhelper(getapplicationcontext());     sqlitedatabase = fooddbhelper.getreadabledatabase();     cursor = fooddbhelper.getinformations(sqlitedatabase);     if (cursor.movetofirst()) {         {             string name, quantity, fat, protein, sugar, vitamins;             boolean selected = false;             string names = null;             integer calorie;              name = cursor.getstring(0);             quantity = cursor.getstring(1);             calorie = integer.valueof(cursor.getstring(2));             fat = cursor.getstring(3);             protein = cursor.getstring(4);             sugar = cursor.getstring(5);             vitamins = cursor.getstring(6);              dataprovider dataprovider = new dataprovider(name, quantity,                     calorie, fat, protein, sugar, vitamins, names, selected);              listdataadapter.add(dataprovider);          } while (cursor.movetonext());       } 

this custom adapter code

public abstract class listdataadapter extends arrayadapter {  list list = new arraylist(); boolean index[];  public listdataadapter(context context, int resource) {      super(context, resource);     index = new boolean[list.size()];  }     static class layouthandler {     textview name, quantity, calorie, fat, protein, sugar, vitamins;     checkbox names;  }  @override public void add(object object) {      super.add(object);     list.add(object);     index = new boolean[list.size()];  }  @override public int getcount() {     return list.size();  }  @override public object getitem(int position) {     return list.get(position);  }  @override public view getview(final int position, view convertview, viewgroup parent) {     view row = convertview;     layouthandler layouthandler;     if (row == null) {         layoutinflater layoutinflater = (layoutinflater) this.getcontext()                 .getsystemservice(context.layout_inflater_service);         row = layoutinflater.inflate(r.layout.row_layout, parent, false);         layouthandler = new layouthandler();         layouthandler.name = (textview) row                 .findviewbyid(r.id.text_dish_name);         layouthandler.quantity = (textview) row                 .findviewbyid(r.id.text_dish_quantity);         layouthandler.calorie = (textview) row                 .findviewbyid(r.id.text_dish_calorie);         layouthandler.fat = (textview) row.findviewbyid(r.id.text_dish_fat);         layouthandler.protein = (textview) row                 .findviewbyid(r.id.text_dish_protein);         layouthandler.sugar = (textview) row                 .findviewbyid(r.id.text_dish_sugar);         layouthandler.vitamins = (textview) row                 .findviewbyid(r.id.text_dish_vitamins);         layouthandler.names = (checkbox) row.findviewbyid(r.id.checkbox1);          row.settag(layouthandler);      } else {         layouthandler = (layouthandler) row.gettag();      }     dataprovider dataprovider = (dataprovider) this.getitem(position);     layouthandler.name.settext(dataprovider.getname());     layouthandler.quantity.settext(dataprovider.getquantity());     layouthandler.calorie             .settext(string.valueof(dataprovider.getcalorie()));     layouthandler.fat.settext(dataprovider.getfat());     layouthandler.protein.settext(dataprovider.getprotein());     layouthandler.sugar.settext(dataprovider.getsugar());     layouthandler.vitamins.settext(dataprovider.getvitamins());      //layouthandler.names.setchecked(dataprovider.isselected());     layouthandler.names.settag(position);     layouthandler.names.setchecked(index[position]);     layouthandler.names             .setoncheckedchangelistener(new compoundbutton.oncheckedchangelistener() {                  @override                 public void oncheckedchanged(compoundbutton buttonview,                                              boolean ischecked) {                     // todo auto-generated method stub                     int pos = (integer) buttonview.gettag();                     index[pos] = ischecked;                     showcheckedbutton(position, ischecked);                  }             });       return row; }  public arraylist<dataprovider> getselectedindexes() {     int size = list.size();     arraylist<dataprovider> selecteditems = new arraylist<dataprovider>();     (int = 0; < size; i++) {         dataprovider citem = (dataprovider) list.get(i);         if (index[i]) {             selecteditems.add(citem);         }     }      return selecteditems;  }  protected abstract void showcheckedbutton(int position, boolean value); 

}

use addtextchangedlistener() method of edittext. this

    inputsearch = (edittext)findviewbyid(r.id.edittext); .... .... listview.setadapter(listdataadapter); inputsearch.addtextchangedlistener(new textwatcher() {          @override         public void ontextchanged(charsequence cs, int arg1, int arg2, int arg3) {             // when user changes text             listdataadapter.getfilter().filter(cs);         }          @override         public void beforetextchanged(charsequence arg0, int arg1, int arg2,                                       int arg3) {             // todo auto-generated method stub          }          @override         public void aftertextchanged(editable arg0) {             // todo auto-generated method stub         }     }); 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -