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