简体   繁体   中英

How to change data in firebase and check id auto increment

Hye, my problem is to rewrite if the user put the same nameItem that will change the price and the quantityItem, if not the item will add new id. i also do auto increment on id.

My Database : 在此处输入图片说明

This is how i try but when the name == nameItem can't read and run on else in on DataChange.

if(i != 0){
        for(id1 = 1; id1<=i; id1++){
            if(id1 != 0){

                final DatabaseReference reff1 = FirebaseDatabase.getInstance().getReference().child("CartList").child(userID).child(String.valueOf(id1));

                reff1.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                        String carinama = dataSnapshot.child("nameItem").getValue().toString();
                        String changequantity = dataSnapshot.child("quantityItem").getValue().toString();

                        if(nameItem == carinama) {

                            int calcQuantity = Integer.parseInt(cdtb.getQuantityItem());
                            newpositionItem = newpositionItem + calcQuantity;
                            String x = String.valueOf(newpositionItem);
                            cdtb.setQuantityItem(x);
                            int price1Item = Integer.parseInt(priceItem);
                            newpositionItem = newpositionItem * price1Item;
                            cdtb.setPriceItem(d2f.format(newpositionItem));
                            reff1.setValue(cdtb);
                            id1 = i;
                        }else {
                            int calcQuantity = Integer.parseInt(changequantity);
                            newpositionItem = newpositionItem + calcQuantity;
                            String x = String.valueOf(newpositionItem);
                            cdtb.setQuantityItem(x);
                            double price1Item = Double.parseDouble(priceItem);
                            newpositionItem = newpositionItem * price1Item;
                            cdtb.setPriceItem(d2f.format(newpositionItem));
                            reff1.setValue(cdtb);
                        }
                    }

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

                        Toast.makeText(getContext(), ""+databaseError, Toast.LENGTH_SHORT).show();
                    }
                });

            }else {

            }
        }
    }else{
        cdtb.setImageItem(imageUrl);
        cdtb.setNameItem(nameItem);
        cdtb.setPriceItem(d2f.format(calcPrice));
        cdtb.setSpecification(specItem);
        cdtb.setQuantityItem(positionItem);
        reff.child(String.valueOf(++maxid)).setValue(cdtb);
    }

Thank you...

nameItem and carinama is String

in java to compare two string you must use equals method not "=="

because == will compare object location in memory and not the content string

so you code condition will be

if(nameItem.equals(carinama)){
           //your code here 
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM