【问题标题】:Calculate Sum of values from node Firebase从节点 Firebase 计算值的总和
【发布时间】:2022-01-28 08:18:57
【问题描述】:

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

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/数量价格:130 日/总:130

D/数量价格:55 D/总数:55

D/数量价格:150 日/总:150

【问题讨论】:

    标签: java android firebase firebase-realtime-database google-cloud-platform


    【解决方案1】:

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

    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。请记住,如果您需要数字,最好将它们作为数字存储在数据库中,而不要作为字符串值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 2010-11-12
      相关资源
      最近更新 更多