Code: Select all
{
"Data" : {
"UyhzVqsz1BVFKoePa2NEmlPFu382" : {
"Budget" : {
"Expanse" : {
"Wedding" : {
"stData1" : "W",
"stData2" : "Wedding",
"stData3" : "111",
"stData4" : "11111"
}
}
},
"Traffic" : {
"Wedding" : {
"-MYKeSN8GZ8WbI-8TfVB" : {
"stData1" : "15 Apr 2021,06:43:00:pm",
"stData2" : "Wedding",
"stData3" : "kkk",
"stData4" : "100"
},
"-MYLu2qPmt9qj1tJPkrP" : {
"stData1" : "16 Apr 2021,00:30:47:am",
"stData2" : "Wedding",
"stData3" : "ddd",
"stData4" : "200"
}
}
}
}
}
}
< /code>
Ich habe viele mögliche Lösungen für dieses Problem gesehen. Ich habe viele von ihnen in meiner App angewendet. Aber keiner der Arbeiten. Der folgende Code hat ein bisschen formuliert. Das Problem ist nun, dass dieser Code den Wert der zuletzt eingegebenen Daten mit sich bringt. Ich kann immer noch nicht die Summe aller Kinderknoten bekommen. < /P>
myRef = myfire.getReference().child("Data").child(strUID).child("Traffic");
myRef.child("Wedding").orderByChild("stData2").equalTo("Wedding").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()) {
int sum = 0;
String value = data.child("stData4").getValue(String.class);
assert value != null;
int total = Integer.parseInt(value);
sum= sum + total;
tvBalance.setText(String.valueOf(sum));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});