#android #firebase #firebase-realtime-database
#Android #firebase #firebase-realtime-database
Вопрос:
Я новичок в Android studio и программировании и в настоящее время пытаюсь создать свое первое приложение. В firebase RTDB у меня есть несколько push-идентификаторов под одним дочерним элементом, число которых продолжает увеличиваться по мере нажатия пользователем определенных кнопок, и все они хранят только целое число. Я хочу получить данные из всех этих push-идентификаторов (или ключей, я действительно не знаю, как они на самом деле называются) под дочерним элементом, а затем суммировать целые числа и отображать результат в a textView
и делать это каждый раз, когда добавляется новое поле. Как я могу это сделать? Пока я знаю только, как обычно отправлять и получать данные дочерним дочерним элементам, подобным этому, но я никогда раньше не использовал push-идентификаторы или ключи:
String recieve = datasnapshot.child("Child").child("subchild").getText().toString();
String send = "send";
databaseReferenc.child("Child").child("sunchile").setValue(send);
Дерево данных в firebase выглядит следующим образом:
Ответ №1:
Предполагая, что Australia
это прямой дочерний элемент корня вашей базы данных Firebase Realtime, для суммирования всех этих значений, пожалуйста, используйте следующие строки кода:
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);
Еще одна вещь. Поскольку вы храните числа, лучше всего хранить их как длинные значения, а не как строковые значения.