当前位置: 首页 > 知识库问答 >
问题:

Android Studio Java:如果产品已经存在于我的购物车活动中,我如何更新我的数量?

连成益
2023-03-14

我面临的问题是,我不知道如何更新购物车活动中已经存在的产品数量。我正在尝试从firebase中检索数据,但无法执行此操作。

这是我的代码:

private void addToCart() {
    DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("User Type").child(firebaseAuth.getUid());
    databaseReference
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                            if (dataSnapshot.child(firebaseAuth.getUid()).child("Cart").child(productID).exists()){
                                //update to firebase
                                String addedQty1 = "" + snapshot.child("addedQuantity").getValue();
                                int getQty = Integer.parseInt(addedQty1);
                                int currentQty = Integer.parseInt(addedQty);

                                int newAddedQty = getQty + currentQty;

                                String addedNewQty = String.valueOf(newAddedQty);

                                HashMap<String, Object> hashMap1 = new HashMap<>();
                                hashMap1.put("addedQuantity", "" + addedNewQty);

                                DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("User Type");
                                databaseReference.child(firebaseAuth.getUid()).child("Cart").child(productID).updateChildren(hashMap1)
                                        .addOnSuccessListener(new OnSuccessListener<Void>() {
                                            @Override
                                            public void onSuccess(Void aVoid) {
                                                //updated
                                                progressDialog.dismiss();
                                                Toast.makeText(ViewProductDetails.this, "Added successfully.", Toast.LENGTH_SHORT).show();
                                            }
                                        })
                                        .addOnFailureListener(new OnFailureListener() {
                                            @Override
                                            public void onFailure(@NonNull Exception e) {
                                                //failed to update
                                                progressDialog.dismiss();
                                                Toast.makeText(ViewProductDetails.this, "" + e.getMessage(), Toast.LENGTH_LONG).show();
                                            }
                                        });
                            } else {
                                //Add to firebase
                                final String timestamp = "" + System.currentTimeMillis();

                                HashMap<String, Object> hashMap = new HashMap<>();
                                hashMap.put("cartID", "" + timestamp);
                                hashMap.put("accountID", "" + accountID);
                                hashMap.put("productID", "" + productID);
                                hashMap.put("orderFrom", "" + shopName);
                                hashMap.put("discountNote", "" + discountNote);
                                hashMap.put("originalPrice", "" + oriPrice);
                                hashMap.put("discountPrice", "" + discountedPrice);
                                hashMap.put("price", "" + price);
                                hashMap.put("productTitle", "" + productTitle);
                                hashMap.put("productCategory", "" + category);
                                hashMap.put("productSize", "" + size);
                                hashMap.put("productQuantity", "" + availableQty);
                                hashMap.put("addedQuantity", "" + addedQty);

                                //add to firebase
                                DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("User Type");
                                databaseReference.child(firebaseAuth.getUid()).child("Cart").child(productID).setValue(hashMap)
                                        .addOnSuccessListener(new OnSuccessListener<Void>() {
                                            @Override
                                            public void onSuccess(Void aVoid) {
                                              
                                                progressDialog.dismiss();
                                                Toast.makeText(ViewProductDetails.this, "Added successfully.", Toast.LENGTH_SHORT).show();
                                                
                                            }
                                        })
                                        .addOnFailureListener(new OnFailureListener() {
                                            @Override
                                            public void onFailure(@NonNull Exception e) {
                                                //failed to update
                                                progressDialog.dismiss();
                                                Toast.makeText(ViewProductDetails.this, "" + e.getMessage(), Toast.LENGTH_LONG).show();
                                            }
                                        });
                            }
                        }
                    }

                @Override
                public void onCancelled(@NonNull DatabaseError error) {

                }
            });

}

我已经分享了代码片段,其中“其他”语句运行正常,而“如果”语句运行失败。希望有人能帮助我。我真的很感激!

共有1个答案

澹台承载
2023-03-14

您的基本解决方案应该看起来像下面的伪代码:

if (product already in cart) {
  get current product count from cart
  increment product count
  store new count back in cart
}

这是一个测试和三个操作。检查所有四个都存在并且所有四个都工作。如果可以,最好分开测试,这样你就可以更容易地隔离错误。

 类似资料:
  • 我正在与laravel进行一个网上购物项目,但这里有一个问题,我想如果用户将产品添加到购物车中,并且已经有相同的产品将被添加数量, 但在我的项目中:如果用户向购物车添加了一个产品,并且已经有了相同的产品,那么它将向会话添加一个新的价值项目 阵列: 阵列: 这是我的ProductsController.php: 非常感谢你。。。

  • 我有一个Android购物应用程序,可以根据库存中产品的可用性来购买产品。最后,我需要扣除购物车上的产品数量,并更新数据库中该商品的数量。问题是,它当前更新了购物车中最后一件商品的数量的数据库值。如何让它更新购物车中商品数量的所有数据库值?。请有人帮帮我。Bellow是执行此操作的类的代码。

  • 我试图将Woocommerce中的Add to Cart按钮的功能设置为只允许将特定产品添加到Cart中一次。 一旦第一次将特定产品添加到cart中,就需要隐藏添加到cart中的内容。 在推车我可以有任何数量的产品-只是一个最大的数量为每一个产品1。 如何允许将特定产品添加到购物车中一次?

  • 我已经更新了我的活动类作为片段,但我不知道如何更新照片中的部分。 我的代码: 主要活动。kt 错误:e:/Users/nisa/AndroidStudioProjects/RecentEarthquakes/app/src/main/java/com/nisaefendioglu/RecentEarthquakes/fragment/地震。kt:(26,58):类型不匹配:推断的类型是地震,但是上

  • 问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅

  • 我正在创建一个WooCommerce(5.6.0版)网站,用户可以在该网站上购买泡沫产品,并在存档页面上计算价格。基本上,用户输入维度,然后根据公式计算价格。我目前正在努力更新购物车中的价格,我以前没有在这一级别定制产品和价格的经验,因此任何帮助都将不胜感激。。到目前为止,我已经完成了以下步骤: 1.获取(通过Ajax)并在WC_会话中设置自定义产品价格 2.从WC_Session数据更改购物车项