java - getting/storing specific data from custom listview by clicking a button inside the listview -


i'am trying make android waiter ordering menu wherein can take orders clicking add/minus buttons in products in menu , presenting summary of orders when click button. created custom listivew , arrayadapters. got stuck in part wherein should able collect contents of listitem in listview clicked add button. here codes. want able take name price , quantity of item added value on.

public class coffee {     public string name;     public double price;     public long itemid;     public int qty;     public int icon;      public coffee (string name, double price, int qty, int icon){         this.name = name;         this.price = price;         this.qty = qty;         this.itemid = 0;         this.icon = icon;     }      public string getname(){         return name;     }      public double getprice(){         return  price;     }      public int getqty(){         return qty;     }      public long getitemid(){         return itemid;     }      public int geticon(){         return icon;     }      public string tostring(){         return "id: " + itemid + "name: " + name + "price: " + price + "quantity: " + qty + "image: "+ icon;    }} 

arrayadapter = coffee_adapter.java

public class coffee_adapter extends arrayadapter<coffee> {  public static class viewholder{          textview itemname;         textview itemprice;         textview itemqty;         imageview itemimage;         button addbutton;         button minusbutton;     }      public coffee_adapter(context context, arraylist<coffee> cof) {         super(context, 0, cof);     }      @override     public view getview(final int position, view convertview, viewgroup parent) {           final coffee coffeelist = getitem(position);          final viewholder viewholder;          if(convertview == null ){              viewholder = new viewholder();              convertview = layoutinflater.from(getcontext()).inflate(r.layout.item_row_layout,parent, false);              viewholder.itemimage = (imageview) convertview.findviewbyid(r.id.itemimage);             viewholder.itemname = (textview) convertview.findviewbyid(r.id.itemname);             viewholder.itemqty = (textview) convertview.findviewbyid(r.id.quantity);             viewholder.itemprice = (textview) convertview.findviewbyid(r.id.itemprice);             viewholder.addbutton = (button) convertview.findviewbyid(r.id.plusbutton);             viewholder.minusbutton = (button) convertview.findviewbyid(r.id.minusbutton);              convertview.settag(viewholder);         }         else {             viewholder = (viewholder) convertview.gettag();         }          viewholder.itemname.settext(coffeelist.getname());         viewholder.itemprice.settext(string.valueof(coffeelist.getprice()));         viewholder.itemqty.settext(string.valueof(coffeelist.getqty()));          viewholder.addbutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 coffeelist.qty ++;                 viewholder.itemqty.settext(string.valueof(coffeelist.qty));                 toast.maketext(getcontext(), "wtf " +coffeelist.qty , toast.length_short).show();              }         });          viewholder.minusbutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 coffeelist.qty --;                 if(coffeelist.qty < 0){                     coffeelist.qty = 0;                 }                 viewholder.itemqty.settext(string.valueof(coffeelist.qty));             }         });         return convertview;     } } 

listfragment

public class coffee_list extends listfragment {      private arraylist<coffee> coffeelist;     private coffee_adapter coffeeadapter;      @override     public void onactivitycreated(bundle savedinstancestate) {         super.onactivitycreated(savedinstancestate);          coffeelist = new arraylist<coffee>();          coffeelist.add(new coffee("qaldi black(americano)",75.00,0,r.drawable.testicon));          coffeeadapter = new coffee_adapter(getactivity(), coffeelist);          setlistadapter(coffeeadapter);           getlistview().setdivider(contextcompat.getdrawable(getactivity(), android.r.color.darker_gray));         getlistview().setdividerheight(1);     } } 

you'll want call notifydatasetchanged() see changes make clicking buttons.

so like:

viewholder.itemqty.settext(string.valueof(coffeelist.qty)); notifydatasetchanged(); 

adding on comment, if wished reset list, in list fragment can try:

private arraylist<coffee> basecoffeelist; //...initialize basecoffeelist did before in onactivitycreated  public void resetlist() {     setlistadapter(new coffee_adapter(getactivity(), basecoffeelist)); } 

or (this haven't tried):

in coffee_adapter.java:

public class coffee_adapter extends arrayadapter<coffee> {     private arraylist<coffee> coffeelist;     public coffee_adapter(context context, arraylist<coffee> cof) {         super(context, 0, cof);         this.coffeelist = cof;     }     public reset(arraylist<coffee> basecoffeelist){         coffeelist.clear();         coffeelist.addall(basecoffeelist);         notifydatasetchanged();     } } 

Comments