Хотя ответ Сайраджа Саванта может сработать, имейте в виду, что нет необходимости прикреплять слушателя на каждой итерации l oop. Более удобное решение - прикрепить слушателя только один раз, как в следующих строках кода:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference juneRef = rootRef.child("Reports").child("June");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String totalIncome = "";
for(DataSnapshot ds : dataSnapshot.getChildren()) {
totalIncome = totalIncome + ds.child("Income").getValue(String.class) + " ";
}
Log.d("TAG", totalIncome);
textView.setText(totalIncome);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
juneRef.addListenerForSingleValueEvent(valueEventListener);
Этот код будет работать, только если свойство Income
имеет тип String, как оно установлено в ваш 20-06-2020
ребенок. Однако приведенный выше код будет не работать, если значение установлено как Integer
, как оно установлено во втором 21-06-2020
потомке. Помните, что оба типа значений должны совпадать. Вы либо установите оба значения как String, и приведенный выше код будет работать, либо вы установите их как числа, в этом случае вам следует использовать эту строку:
totalIncome = totalIncome + ds.child("Income").getValue(Long.class) + " ";