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
Post a Comment