java - RecyclerView item removal -
i trying remove specific items recyclerview list not know how approach it. cannot use notifyitemremoved method because error says method cannot used static context. can see have of event listeners in adapter's view holder because more convenient.
here code
public class cartlistadapter extends recyclerview.adapter<cartlistadapter.restaurantholder> { list<cartitem> cartlist; private static string log_tag = "myrecyclerviewadapter"; private static myclicklistener myclicklistener; static context context; public static class restaurantholder extends recyclerview.viewholder { textview cartitem; textview cartprice; textview cartquantity; imageview increaseicon; imageview decreaseicon; imageview deleteicon; int selectedposition; int quantity; double price; boolean pricestored = false; restaurantholder(view itemview) { super(itemview); cartitem = (textview)itemview.findviewbyid(r.id.cartitem); cartprice = (textview)itemview.findviewbyid(r.id.cartitemprice); cartquantity = (textview)itemview.findviewbyid(r.id.itemquantity); increaseicon = (imageview)itemview.findviewbyid(r.id.increase); decreaseicon = (imageview)itemview.findviewbyid(r.id.decrease); deleteicon = (imageview)itemview.findviewbyid(r.id.delete); itemview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { selectedposition = getposition(); log.i(log_tag,"position = "+selectedposition ); } }); increaseicon.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { if(!pricestored) price = double.parsedouble(cartprice.gettext().tostring()); pricestored = true; quantity = integer.parseint(cartquantity.gettext().tostring()) + 1; cartquantity.settext(string.valueof(quantity)); cartprice.settext(string.valueof(price * quantity)); } }); decreaseicon.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { if(quantity > 1) { quantity = integer.parseint(cartquantity.gettext().tostring()) - 1; cartquantity.settext(string.valueof(quantity)); cartprice.settext(string.valueof(double.parsedouble(cartprice.gettext().tostring())-price)); }else{ toast.maketext(context,"minimum order limit",toast.length_short).show(); } } }); deleteicon.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { selectedposition = getposition(); log.i(log_tag,"removal position = "+selectedposition ); //remove(selectedposition); } }); } } cartlistadapter(context context) { this.context = context; cartlist = new arraylist<cartitem>(); } public void additem(cartitem cartitem) { cartlist.add(cartitem); } public void remove(int position) { cartlist.remove(position); notifyitemremoved(position); } @override public void onattachedtorecyclerview(recyclerview recyclerview) { super.onattachedtorecyclerview(recyclerview); } @override public restaurantholder oncreateviewholder(viewgroup viewgroup, int i) { view view = layoutinflater.from(viewgroup.getcontext()).inflate(r.layout.cart_item,viewgroup,false); restaurantholder restaurantholder = new restaurantholder(view); return restaurantholder; } @override public void onbindviewholder(restaurantholder restaurantholder, int i) { restaurantholder.cartquantity.settext(string.valueof(cartlist.get(i).quantity)); restaurantholder.cartprice.settext(string.valueof(cartlist.get(i).price)); restaurantholder.cartitem.settext(cartlist.get(i).cartitem); } @override public int getitemcount() { return cartlist.size(); } public interface myclicklistener { public void onitemclick(int position, view v); } }
i removed static holder class, working now
Comments
Post a Comment