Java Firebase数据库检索多个子项的总和

Java Firebase数据库检索多个子项的总和,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想对Firebase实时数据库中的多个子节点求和 这是我的数据库,在这里我想做一个“amount”子项的总和,那么怎么做呢 请帮忙 您可以使用firebase的addValueEventListener方法对此和循环dataSnapshot计算每个子项的总数 your_database_reference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapsh

我想对Firebase实时数据库中的多个子节点求和

这是我的数据库,在这里我想做一个“amount”子项的总和,那么怎么做呢


请帮忙

您可以使用firebase的addValueEventListener方法对此和循环dataSnapshot计算每个子项的总数

your_database_reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    int totalamount = 0;
    for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
        // TODO: handle the dataSnapshot
        String amount = snapshot.child("amount").getValue();
        // remove _Rs. from amount and typecase it to int
        totalAmount += amount;
    }
}

@Override
public void onCancelled(DatabaseError databaseError) {
    // Getting Post failed, log a message
    Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
    // ...
}
});

正如我在数据库中看到的,您的
amount
属性的类型是String而不是number。因此,不能简单地创建字符串文字的总和。要解决此问题,您需要将属性名称更改为
number
类型。我还看到您将货币与号码一起存储。您应该以编程方式将货币添加到用户端,而不是数据库中。如果您想更改<代码>类型> <代码>属性,请参阅此强< < /强>

的答案。 但是,如果要保持实际的数据库结构,可以使用以下技巧将所有金额相加:

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int total = 0;
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String amount = ds.child("amount").getValue(String.class);
            int value = Integer.valueOf(amount.replace(" Rs.", ""));
            total =+ value;
        }
        Log.d("TAG", String.valueOf(total) + " Rs.");
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
your_database_reference.addListenerForSingleValueEvent(eventListener);
logcat中的输出将为:

27000

听起来有可能。从列表中读取数据并使用此API获取金额应该相当简单:您已经尝试了什么?是的,它工作正常,非常感谢您的帮助。。!