【问题标题】:Retrieve data from multiple push ids under a single child in firebase realtime database从firebase实时数据库中单个子项下的多个推送ID中检索数据
【发布时间】:2020-09-21 12:33:18
【问题描述】:

我是 android studio 和编程新手,目前正在尝试制作我的第一个应用程序。在firebase RTDB中,我在一个孩子下有多个推送ID,随着用户按下某些按钮,它们的数量会不断增加,并且它们都只存储一个整数。我想从子项下的所有这些推送 id(或键,我真的不知道它们实际上叫什么)中检索数据,然后将整数相加并在textView 中显示结果并每次都这样做添加了一个新字段。我怎样才能做到这一点?到目前为止,我只知道如何像这样正常地向子子孩子发送和接收数据,但我以前从未使用过推送 ID 或密钥:

String recieve = datasnapshot.child("Child").child("subchild").getText().toString();

String send = "send";

databaseReferenc.child("Child").child("sunchile").setValue(send);

firebase中的数据树如下:

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    假设 Australia 是您的 Firebase 实时数据库根的直接子级,要对所有这些值求和,请使用以下代码行:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference australiaRef = rootRef.child("Australia");
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            int total = 0;
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String value = Integer.parseInt(ds.getValue(String.class));
                total += value;
            }
            Log.d("TAG", "total: " + total);
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
        }
    };
    australiaRef.addListenerForSingleValueEvent(valueEventListener);
    

    还有一件事。因为您要存储数字,所以最好将它们存储为长值,不要存储为字符串值。

    【讨论】:

    • 嗨 Poison_Frog!您是否尝试过我上面的解决方案?如果您认为我的回答对您有帮助,请考虑采纳(✔️)。我真的很感激。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2020-12-09
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多