Можно ли перебирать уникальных потомков с разными значениями в базе данных Firebase? - PullRequest
0 голосов
/ 25 сентября 2019

пожалуйста, найдите время, чтобы взглянуть на эту базу данных Firebase Фотография здесь

Если XRA & YRa являются строками в ArrayList,можно ли перебирать узлы XRA & YRa , чтобы получить данные внутри них, не вводя их путь в слушателе Datachange, т.е. если у меня есть 10 таких узлов, как они, иЯ хочу получить данные в каждом из них без необходимости вводить каждый из них как путь в каталоге слушателя.

Ниже код работает для одного узла:

FirebaseDatabase.getInstance().getReference().child("Drawings").child("Area 71").child("XRA").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        for (DataSnapshot ds : dataSnapshot.getChildren()) {
            key = ds.getKey();
            Current_Version = ds.child("Current Version").getValue().toString();
            Previous_Version = ds.child("Previous Version").getValue().toString();
        }

    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage());
    }
}); 

1 Ответ

0 голосов
/ 26 сентября 2019

Удалите addListenerForSingleValueEvent из child("XRA") и установите addListenerForSingleValueEvent в child("Area 71")

Затем запустите вложенный цикл.

Примечание: сложность по времени составляет O(n^2)

FirebaseDatabase.getInstance().getReference()
.child("Drawings").child("Area 71").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

        for (DataSnapshot parentDS : dataSnapshot.getChildren()) {

            for (DataSnapshot ds : parentDS.getChildren()) {
                key = ds.getKey();
                Current_Version = ds.child("Current Version").getValue().toString();
                Previous_Version = ds.child("Previous Version").getValue().toString();
            }
        }

    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage());
    }
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...