Справочник базы данных Firebase для извлечения детей

Charbel Hanna спросил: 28 марта 2018 в 04:51 в: java

У меня есть база данных firebase, которая состоит из следующего:

  1. Событие
  2. Идентификатор авторов (Firebaseauth id)
  3. Имя события
  4. Атрибуты событий, такие как имя даты даты даты ...

Вот пример моей базы данных:

Я хочу получить атрибуты каждого события в базе данных, независимо от UID, но я не могу избавиться от UID по многим другим причинам.

Im, используя следующий код для извлечения:

ref = database.getReference("Event/");
        ref.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Event event = new Event();
                event = dataSnapshot.getValue(Event.class);
                events.add(event);
                myRecyclerView.setAdapter(adapter);
            }

Где Событие - это пользовательский класс, содержащий атрибуты, getters / seters и конструктор события. Ref - это ссылка на базу данных. Но событие Возвращаемый объект пуст.

Я использую android.

2 ответа

Есть решение
Levi Moreira ответил: 28 марта 2018 в 05:11

У вас еще есть один уровень для достижения одного события:

public void onChildAdded(DataSnapshot dataSnapshot, String s) {
             for(DataSnapshot snapshot: dataSnapshot.getChildren()){
                Event event = new Event();
                event = snapshot.getValue(Event.class);
                events.add(event);
                myRecyclerView.setAdapter(adapter);
          }
            }

Также убедитесь, что в вашем классе Event есть открытые методы получения и установки, чтобы его можно было десериализовать.

Pedro Massango ответил: 28 марта 2018 в 05:15

похоже, что вы получили новый файл неправильно, попробуйте следующее:

String EVENT_ID = "YOUR EVENT ID HERE"
ref = database.getReference("Event")
      .child(EVENT_ID)
      .addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Event event = new Event();
                event = dataSnapshot.getValue(Event.class);
                events.add(event);
                myRecyclerView.setAdapter(adapter);
            }

OBS: поместите идентификатор события в EVENT_ID. Это будет работать.