/ / новий об'єкт, що створюється щоразу - java, android, shopping-cart

Кожен раз створюється новий об'єкт - java, android, shopping cart

Я розробляю додаток для кошика в Android тапослушник. Зараз я стикаюся з однією проблемою. Я можу додати предмет, і він додає його до кошика. Я можу відредагувати кількість предмета або видалити його з перегляду списку після того, як додам його до кошика.

Тому я хочу відключити кнопку addToCartякщо він вже присутній у кошику, щоб уникнути дублікатів. Але кожен запис продукту приймається як новий запис. Я думаю, що я не посилався на це належним чином. Будь-яка допомога буде вдячна.

Це активність, яку викликають щоразу, коли ви натискаєте елемент (наприклад: Dell всередині категорії Ноутбуки)

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

Найшвидшим вирішенням цього питання буде перекриття пункту "s equals().

В іншому випадку кожен екземпляр вашого товару буде врахований (і справді) є) відрізняється від точки зору Java.

Ось як ви могли це зробити:

// 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();
}

Звичайно, у наведеному вище коді я припустити що у вашому елементі є поле для ідентифікатора елемента та спосіб отримання його. Зверніть увагу, що це може не влаштовувати вас і що вам, можливо, доведеться зробити це до нього.