计算节点 Firebase 的值总和

Calculate Sum of values from node Firebase

我正在获取所有数量的价格。但我不知道如何将它们全部添加并放在一个字符串下。有人可以帮忙

FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference databaseReference = mFirebaseDatabase.getReference().child("cart").child(uid);

databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
            Log.d("dasdasdasdad", String.valueOf(dataSnapshot));

            String quantityprice = (String) dataSnapshot.child("quantityprice").getValue();

            Log.d("quantityprice", String.valueOf(quantityprice));
        }
    }

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

    }
});

在这里,我在日志中获取所有数量价格值 即:- 130,55,150

但我不知道如何将它们全部添加到一个字符串下。 任何帮助将不胜感激。

这个我也试过了

DatabaseReference databaseReference = mFirebaseDatabase.getReference().child("cart").child(uid);

        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
                    Log.d("dasdasdasdad", String.valueOf(dataSnapshot));

                    Integer total = 0;

                    String quantityprice = (String) dataSnapshot.child("quantityprice").getValue();

                    Log.d("quantityprice", String.valueOf(quantityprice));

                    int price = Integer.valueOf(quantityprice);

                    total =+ price;
                Log.d("total",total);   }

但总计始终显示不同。

这是日志

D/quantityprice: 130 D/total: 130

D/quantityprice: 55 D/total: 55

D/quantityprice: 150 D/total: 150

要解决此问题,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference productsRef = db.child("card").child(uid);
productsRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            double total = 0.00;
            for (DataSnapshot ds : task.getResult().getChildren()) {
                String quantityPrice = ds.child("quantityprice").getValue(String.class);
                total += Double.parseDouble(quantityPrice);
            }
            Log.d("TAG", "total: " + total);
        } else {
            Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

logcat 中的结果将是:

total: 335.00

解决这个问题的关键是将数据库中的String值解析为double。请记住,如果您需要数字,最好将它们作为数字存储在数据库中,并且 而不是 作为字符串值。