Я не знаю, зачем вам это делать, но я бы так и подошел. По сути, я добавляю valueEventListener в мой объект FirebaseDatabase, затем я получаю ключ, который в этом случае будет означать первый уровень.
Добавьте еще одну ссылку FirebaseDatabase с ключом из первой ссылки в качестве дочернего, это позволит вам получить доступ к ключу второго уровня. Оттуда вы можете пойти дальше и получить доступ к данным, как при обычном прослушивателе событий.
По сути, если вы вызовете функцию getData из valueEventListener ссылки на classesDatabase и передадите снимок данных, вы получите доступ к данным второго уровня.
classesDatabase = FirebaseDatabase.getInstance().getReference().child("classes");
private void getData(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key1 = ds.getKey();
DatabaseReference dbReference = classesDatabase.child(key1);
dbReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot2) {
for (DataSnapshot ds2 : dataSnapshot2.getChildren()) {
String key2 = ds2.getKey();
Classes classOne = ds2.child(key2).getValue(Classes.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(getClass().getName().toString(), ": " + databaseError.getMessage());
}
});
}
}