Intereting Posts
Как исправить ошибку «Содержимое не разрешено в прологе»? Получение недопустимой ошибки параметра android_key, после первого входа в систему в Facebook Android SDK Можно ли отлаживать локальную загрузку приложений Google Play в Android Studio? Android – Раздвижное меню с подменю HttpResponse для String android Как правильно отформатировать XML с помощью XMLSerializer? Android java.net.SocketException: socket failed: EACCES (Permission denied) Как поместить горизонтальную линию делителя между редактированием текста в действии Android: включить внешний баннер в сборку (без Eclipse) Проблемы с созданием приложения GCM Demo Server Сделать новую активность за старой в процессе перехода Android как остановить gps Используйте мое собственное приложение для Android / apk в качестве запуска / Замена главного экрана Android – изменение размера текста EditText на основе клавиатуры Службы Google Play устарели. Требуется 3159100, но найдено 3158130

Как получить все данные ребенка в базе данных firebase?

У меня есть эта база данных firebase

Введите описание изображения здесь

И мне нужно получить все номера телефонов пользователей, которые слушатель должен использовать для получения всех детей?

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

Я искал документацию, это связано с DataSnapshot но я не смог получить DataSnapshot без прослушивателя! Правильно ли искать DataSnapshout или использовать что-то еще

Solutions Collecting From Web of "Как получить все данные ребенка в базе данных firebase?"

Сначала загрузите данные пользователя с помощью datasnapshot.

 //Get datasnapshot at your "users" root node DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users"); ref.addListenerForSingleValueEvent( new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { //Get map of users in datasnapshot collectPhoneNumbers((Map<String,Object>) dataSnapshot.getValue()); } @Override public void onCancelled(DatabaseError databaseError) { //handle databaseError } }); 

Затем пройдите через пользователей, обращаясь к их карте и собирая телефонное поле.

 private void collectPhoneNumbers(Map<String,Object> users) { ArrayList<Long> phoneNumbers = new ArrayList<>(); //iterate through each user, ignoring their UID for (Map.Entry<String, Object> entry : users.entrySet()){ //Get user map Map singleUser = (Map) entry.getValue(); //Get phone field and append to list phoneNumbers.add((Long) singleUser.get("phone")); } System.out.println(phoneNumbers.toString()); } 

Этот прослушиватель будет извлекать только данные, когда они явно вызываются. Рассмотрите возможность хранения списка номеров под узлом allPhoneNumbers в дополнение к вашему узлу пользователя. Это сделает ваши данные легче и легче обрабатывать при сборе всех номеров. Если вы скажете, что сотни пользователей, данные «users» datasnapshot будут слишком большими, а список «allPhoneNumbers» будет намного более эффективным.

Вышеприведенный код был протестирован в вашей тестовой базе данных и работает. Тем не менее, ваше поле телефона может быть отправлено в String или int в зависимости от типа вашего телефона.

  DatabaseReference ref1= FirebaseDatabase.getInstance().getReference(); DatabaseReference ref2,ref3,ref4; ref2 = ref1.child("User"); ref2.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { Userlist = new ArrayList<String>(); // Result will be holded Here for (DataSnapshot dsp : dataSnapshot.getChildren()) { Userlist.add(String.valueOf(dsp.geValue())); //add result into array list }userlist is stores all values of users then point every userlist item the get mobile numbers