java - new object created everytime -
i'm developing shopping cart app in android , novice. have been facing 1 problem now. can add item , adds cart. can edit quantity of item or remove listview after have added cart.
so want disable addtocart button if present in cart in order avoid duplicates. every entry product taken new entry. think have not referenced properly. appreciated.
this activity gets called every time press item (for example: dell inside laptops category)
protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.productdetails); layoutinflater li; final list<product> cart = shoppingcarthelper.getcart();// //items cart int productindex = getintent().getextras().getint( shoppingcarthelper.product_index);// item no in list string product_string = getintent().getextras().getstring("product"); switch (product_string) { case "laptops": catalog = shoppingcarthelper.getlaptopcatalog(getresources()) break; case "phones": catalog = shoppingcarthelper .gephonescatalog(getresources()); break; } final product selectedproduct=(product)this.catalog.get(productindex); // declaration of product taken new entry...................... imageview productimageview = (imageview) findviewbyid(r.id.imageviewproduct); productimageview.setimagedrawable(selectedproduct.productimage); textview producttitletextview = (textview)findviewbyid(r.id.textviewproducttitle); producttitletextview.settext(selectedproduct.title); textview productdetailstextview = (textview) findviewbyid(r.id.textviewproductdetails); productdetailstextview.settext(selectedproduct.description); final button addtocartbutton = (button) findviewbyid(r.id.buttonaddtocart); addtocartbutton.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { cart.add(selectedproduct); selectedproduct.quantity ++; finish(); } }); if(cart.contains(selectedproduct)) { addtocartbutton.setenabled(false); addtocartbutton.settext("item in cart"); } }
the fastest workaround override item's equals()
.
otherwise, every instance of item considered (and is) different java's perspective.
here's how it:
// somewhere in item's class.. @override public boolean equals(object o) { if(!(o instanceof youritem) return false; youritem = (youritem) o; // line below based on assumption, should change better suit usecase. return this.getitemid() == i.getitemid(); }
of course in above code assume item has field item id , getter method obtain it. note might not suit , might have make adaptation it.
Comments
Post a Comment