/ / नई वस्तु हर बार बनाई गई - जावा, एंड्रॉइड, शॉपिंग-कार्ट

नई वस्तु हर बार बनाई गई - जावा, एंड्रॉइड, शॉपिंग-कार्ट

मैं Android में एक शॉपिंग कार्ट ऐप विकसित कर रहा हूंएक नौसिखिया। मुझे अब एक समस्या का सामना करना पड़ रहा है। मैं एक आइटम जोड़ सकता हूं और यह कार्ट में जोड़ता है। मैं किसी आइटम की मात्रा को संपादित कर सकता हूं या कार्ट में जोड़े जाने के बाद सूची से हटा सकता हूं।

तो मैं जो चाहता हूं, वह AddToCart बटन को अक्षम करना हैअगर यह डुप्लिकेट से बचने के लिए कार्ट में पहले से मौजूद है। लेकिन एक उत्पाद में प्रत्येक प्रविष्टि को एक नई प्रविष्टि के रूप में लिया जाता है। मुझे लगता है कि मैंने इसे ठीक से संदर्भित नहीं किया है। किसी भी सहायता की सराहना की जाएगी।

यह वह गतिविधि है जिसे किसी आइटम को दबाने पर हर बार कॉल किया जाता है (उदाहरण के लिए: लैपटॉप श्रेणी के अंदर डेल)

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.productdetails);
LayoutInflater li;
final List<Product> cart = ShoppingCartHelper.getCart();// get all //items from cart
int productIndex = getIntent().getExtras().getInt(
ShoppingCartHelper.PRODUCT_INDEX);// the item no in the 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);
// this declaration of product is taken as a 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");
}
}

उत्तर:

जवाब के लिए 0 № 1

इसके लिए सबसे तेज़ समाधान आइटम के ओवरराइड करना होगा equals().

अन्यथा, आपके आइटम के प्रत्येक उदाहरण पर विचार किया जाएगा (और वास्तव में है) जावा के दृष्टिकोण से अलग है।

यहाँ आप इसे कैसे कर सकते हैं:

// Somewhere in your item"s class..

@Override
public boolean equals(Object o) {
if(!(o instanceof YourItem)
return false;
YourItem i = (YourItem) o;
// This line below is based on my assumption, you should change to better suit your usecase.
return this.getItemId() == i.getItemId();
}

निश्चित रूप से उपरोक्त कोड I में मान लीजिये आपके आइटम में आइटम ID के लिए एक फ़ील्ड और इसे प्राप्त करने के लिए एक गटर विधि है। ध्यान दें कि यह आपके अनुरूप नहीं हो सकता है और आपको इसके लिए कुछ अनुकूलन करना पड़ सकता है।