java - I'm trying to update the textview in the recyclerview after clicking add and delete button. notifyDataSetChanged(); method is not working -
my onclick delete , add button in adapter class under myviewholder class. managed delete , add data server. not updating recyclerview. below adapter class. used volley library send request, delete request pain in a**s , changed post method. thats not problem im facing now. want update reserved amount displayed on recyclerview..
public class cartadapter extends recyclerview.adapter<cartadapter.myviewholder>{ private list<cart> cartlist; private context mcontext; private cart cart; private int inventoryid; private string username; private cartadapter cartadapter; private string url = "http://192.168.4.31/api/canteen/cart"; private string delete_url = "http://192.168.4.31/api/canteen/mobile_delete"; string qtyreserved; public static boolean add= true; public static int sum = 0; public class myviewholder extends recyclerview.viewholder implements view.onclicklistener { public imageview thumbnail, plus, minus; public textview menuname, quantity_reserved, price ; public myviewholder(view view) { super(view); thumbnail = view.findviewbyid(r.id.itemimage); menuname = view.findviewbyid(r.id.itemname); quantity_reserved = view.findviewbyid(r.id.qty); price = view.findviewbyid(r.id.price); plus = view.findviewbyid(r.id.plusimage); minus = view.findviewbyid(r.id.minusimage); view.setonclicklistener(this); plus.setonclicklistener(this); minus.setonclicklistener(this); } @override public void onclick(view view) { cart = cartlist.get(getadapterposition()); inventoryid = cart.getcart_inv_id(); username = cart.getscreen_name(); if (view.getid() == plus.getid()) { puttocart(getadapterposition()); // cartadapter.notifyitemchanged(getadapterposition()); } if (view.getid() == minus.getid()) { deletefromcart(getadapterposition()); // notifyitemremoved(getadapterposition()); notifyitemrangechanged(getadapterposition(),cartlist.size()); } } } public cartadapter(context context, list<cart> images) { mcontext = context; this.cartlist = images; this.cartadapter = this; } @override public myviewholder oncreateviewholder(final viewgroup parent, final int viewtype) { final view itemview = layoutinflater.from(parent.getcontext()) .inflate(r.layout.cart_thumbnail, parent, false); return new myviewholder(itemview); } @override public void onbindviewholder(myviewholder holder, int position) { cart = cartlist.get(position); string url_image = "http://192.168.4.31"; string name = cart.getimg_url(); string finalurl = ""; finalurl = url_image + name; glide.with(mcontext).load(finalurl) .thumbnail(0.3f) .fitcenter() .placeholder(r.drawable.lunch) .diskcachestrategy(diskcachestrategy.all) .into(holder.thumbnail); holder.menuname.settext(cartlist.get(position).getcart_inv_name()); holder.quantity_reserved.settext(integer.tostring(cartlist.get(position).getquantity_reserved())); holder.price.settext(double.tostring(cartlist.get(position).gettotal())+"0"); // refreshblockoverlay(position); // if(add){ // sum = sum + cart.getquantity_reserved(); // add= false; } } @override public int getitemcount() { return cartlist.size(); } public void puttocart(final int position) { jsonobject param = new jsonobject(); try { param.put("screen_name", username); param.put("inventory_id", inventoryid); param.put("pending", "null"); } catch (jsonexception e) { e.printstacktrace(); } jsonobjectrequest request_json = new jsonobjectrequest(request.method.put, url, param, new response.listener<jsonobject>() { @override public void onresponse(jsonobject response) { try { qtyreserved = response.getstring("amount_reserved"); cart image = new cart(); image.setquantity_reserved(integer.valueof(qtyreserved)); cartlist.add(image); // notifyiteminserted(position); notifyitemrangechanged(position , getitemcount()); } catch (jsonexception e) { e.printstacktrace(); } } }, new response.errorlistener() { @override public void onerrorresponse(volleyerror error) { volleylog.e("error: ", error.getmessage()); toast.maketext(mcontext, "oops!! not available ", toast.length_short).show(); } }); mysingleton.mysingletoninstance(mcontext.getapplicationcontext()).addtorequestque(request_json); } public void deletefromcart(final int position2) { jsonobject param = new jsonobject(); try { param.put("screen_name", username); param.put("inventory_id", inventoryid); } catch (jsonexception e) { e.printstacktrace(); } jsonobjectrequest request_json = new jsonobjectrequest(request.method.post, delete_url, param, new response.listener<jsonobject>() { @override public void onresponse(jsonobject response) { // notifyitemremoved(position2); //notifyitemrangechanged(); // notifyitemremoved(position2); // notifyitemchanged(position2); //notifyitemrangechanged(position2, 1, null); // cartadapter.notifydatasetchanged(); notifydatasetchanged(); toast.maketext(mcontext, "deleted", toast.length_short).show(); } }, new response.errorlistener() { @override public void onerrorresponse(volleyerror error) { volleylog.e("error: ", error.getlocalizedmessage()); toast.maketext(mcontext, "not ok " + error.getmessage(), toast.length_short).show(); } }); mysingleton.mysingletoninstance(mcontext.getapplicationcontext()).addtorequestque(request_json); } }
you deleting data server still keeping in app memory in list. on succesfull server response should delete list , call notifydatasetchanged();
Comments
Post a Comment