为什么当我将新商品添加到购物车时,它会添加两个商品。如果已经有数据,它会添加一项?

时间:2021-04-28 14:51:20

标签: android

我必须参考文档,其中一个称为添加了购物车数据的项目,另一个是药房,每当将商品添加到空购物车时,它都会使用药房名称设置药房参考。当一个带有数据的项目被添加到购物车时,它会检查药房名称,如果它是相同的,它就会添加它,否则它会考虑提交。问题是,当我第一次将一个项目添加到一个空购物车时,它添加了两个项目,它似乎在购物车为空时执行第一个条件,然后它返回到先前添加数据的条件,如果有的话已经有数据了。请帮帮我。


    holder.add_cart.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(final View v) {
    
                    final Drug drug = new Drug();
                    drug.setName(uploadCurrent.getName());
                    drug.setmPharmacy(uploadCurrent.getmPharmacy());
                    drug.setmPrice(uploadCurrent.getmPrice());
                    drug.setQuantity("1");
                    drug.setmTotal( Long.valueOf(uploadCurrent.getmPrice()));
    
                    final DatabaseReference reference1 = FirebaseDatabase.getInstance().getReference("cart").child(id).child("pharmacy");
    
                    reference1.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
    
                            if (!snapshot.exists())
                            {
                                //here if cart is empty
                                DatabaseReference reference = FirebaseDatabase.getInstance().getReference("cart").child(id).child("items");
    
                                reference.push().setValue(drug).addOnCompleteListener(new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        if (task.isSuccessful())
                                        {
                                            reference1.setValue(uploadCurrent.getmPharmacy()).addOnSuccessListener(new OnSuccessListener<Void>() {
                                                @Override
                                                public void onSuccess(Void aVoid) {
                                                    /*Snackbar.make(v, "Added to Cart Successfuly", Snackbar.LENGTH_LONG)
                                                            .setActionTextColor(Color.GREEN)
                                                            .setAction("Go to Cart", new View.OnClickListener() {
                                                                @Override
                                                                public void onClick(View v) {
                                                                    Intent i = new Intent(mContext, MainActivity.class);
                                                                    i.putExtra("to", "drug_cart");
                                                                    mContext.startActivity(i);
                                                                }
                                                            })
    
                                                            .show();*/
                                                    Toast.makeText(mContext, "added new", Toast.LENGTH_SHORT).show();
    
    
                                                }
                                            });
                                        }
                                    }
                                });
    
                            }
                            else
                            {
                                
                                if (snapshot.getValue().toString().matches(uploadCurrent.getmPharmacy()))
                                {
                                    //Toast.makeText(Drug_Detail.this, "matches", Toast.LENGTH_SHORT).show();
    
                                    //here if the item of the same pharmacy
                                    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("cart").child(id).child("items");
                                    reference.push().setValue(drug).addOnSuccessListener(new OnSuccessListener<Void>() {
                                        @Override
                                        public void onSuccess(Void aVoid) {
    
                                            /*Snackbar.make(v, "Added to Cart Successfuly", Snackbar.LENGTH_LONG)
                                                    .setActionTextColor(Color.GREEN)
                                                    .setAction("Go to Cart", new View.OnClickListener() {
                                                        @Override
                                                        public void onClick(View v) {
                                                            Intent i = new Intent(mContext, MainActivity.class);
                                                            i.putExtra("to", "drug_cart");
                                                            mContext.startActivity(i);
                                                        }
                                                    })
                                                    .show();*/
                                            Toast.makeText(mContext, "added to existing", Toast.LENGTH_SHORT).show();
    
    
                                        }
                                    });
                                }
                                else {
                                    Toast.makeText(mContext, "You can only add from cart's pharmacy!", Toast.LENGTH_SHORT).show();
    
    
    
                                }
    
    
    
                            }
    
                        }
    
                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {
    
                        }
                    });
    
    
                }
            });

0 个答案:

没有答案