#android #firebase #firebase-realtime-database
#Android #firebase #firebase-база данных в реальном времени
Вопрос:
Я создаю приложение для Android, которое запрашивает у пользователя один или несколько языков и сохраняет их в списке, а затем возвращает содержимое (используя FirebaseRecyclerAdapter) в зависимости от языка (языков), т.е. Как я могу получить дочерние элементы арабского и английского (03,01), например?. Все, что я мог получить, это дочерние элементы данных, используя:
mRef = mFirebaseDatabase.getReference("data");
Моя база данных:
"data" : {
"Arabic" : {
"01" : {}
},
"English" : {
"03" : {}
},
"French" : {
"02" : {}
}
}
Комментарии:
1. Пожалуйста, предоставьте более подробную базу данных и укажите точные данные, которые вы хотите получить.
2. Спасибо за ваш комментарий, Алекс, я обновил сообщение с базой данных.
3. И какие именно данные вы хотите получить?
4. Ему нужно извлекать данные из нескольких дочерних элементов
5. Я хочу получить дочерние элементы языков, которые находятся в списке, например, если у меня есть список L= [Арабский, французский], я хочу получить дочерние элементы арабского и французского языков перед отправкой данных в FirebaseRecyclerAdapter.
Ответ №1:
Я думаю, у вас могут возникнуть проблемы с тем, как пройти DataSnapshot
то, что вы получаете при чтении из Firebase.
Чтобы перемещаться по данным в вашем вопросе, вы должны сделать что-то вроде:
mRef = mFirebaseDatabase.getReference("data");
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot languageSnapshot: dataSnapshot.getChildren()) {
System.out.println(languageSnapshot.getKey()); // "Arabic", "English", "French"
for (DataSnapshot childSnapshot: languageSnapshot.getChildren()) {
System.out.println(childSnapshot.getKey()); // "01", "03", "02"
...
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
Также смотрите Документацию Firebase о чтении списка данных со значением события.
Комментарии:
1. Спасибо, Фрэнк, возможно ли отобразить дочерние снимки в FirebaseRecyclerAdapter?
2. Конечно, но и создание пользовательского адаптера для вас немного выходит за рамки того, что мы можем разумно сделать в вопросе переполнения стека. Я рекомендую прочитать developer.android.com/guide/topics/ui/layout/recyclerview чтобы узнать, как применить код из моего ответа к пользовательскому адаптеру.