【发布时间】:2015-06-14 01:21:46
【问题描述】:
我正在开发一个 android 和一个新手的购物车应用程序。我现在一直面临一个问题。 我可以添加一个项目并将其添加到购物车中。将商品添加到购物车后,我可以编辑商品的数量或将其从列表视图中删除。
所以我想要的是禁用 addToCart 按钮,如果它已经存在于购物车中,以避免重复。但是每一个进入产品的条目都被视为一个新条目。我想我没有正确引用它。任何帮助将不胜感激。
这是您每次按下某个项目时都会调用的 Activity(例如:笔记本电脑类别中的戴尔)
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");
}
}
【问题讨论】:
-
如何保存添加的项目?使用数据库?
-
我认为这里的问题与购物车中的
Product与您执行cart.contains(selectedProduct)时执行的目录中的“产品”之间的比较有关。您如何将商品添加到购物车?您是否期望它们是相同的实际对象?如果您允许指定数量,这似乎不太可能。也许您需要编写一些代码来确定匹配,而不是让 List 对 2 个对象执行相等比较。 -
其实我假设可以从这一行获得相同的产品 final Product selectedProduct=(Product)this.catalog.get(productIndex);我没有使用数据库。只是一个类来动态添加项目
-
是的,但是当您将产品添加到购物车时,您会添加什么,当您从目录中获取产品时,您会得到什么。除非您正在处理相同的实际 java 对象。检查 for.contains 将失败。即。
-
那么获得相同对象的方法是什么......并避免新创建??
标签: java android shopping-cart