Как получить сохраненные данные из Firebase? - PullRequest
0 голосов
/ 14 июня 2019

Я не получаю вывод из базы данных Firebase. Это ничего не возвращает. Вот моя структура данных.

Я также пытался получить значение с помощью запроса, но он вернул ошибку базы данных:

Невозможно преобразовать java.util.hashmap в строку

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference().child("Member").push();

myRef.addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {

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

              String value = ds.getValue(String.class);
              Log.d("Tag", "Value is" + value);
          }
      }

JSON:

{
  "Member" : {
    "-LhKJVG1Tj2628sHPg4D" : {
      "age" : "21",
      "name" : "Gagan",
      "nickname" : "Gaggi"`enter code here`
    },
    "-LhKKaNFnPrrh1bQNPfH" : {
      "age" : "18",
      "name" : "Jashan",
      "nickname" : "Jassi"
    }
  }
}

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Вы не можете вызвать getValue с String.class, потому что он не соответствует критериям вызова метода.

Из документации

public T getValue (Class valueType)

Этот метод используется для объединения данных, содержащихся в этом снимке, в класс по вашему выбору. Класс должен соответствовать 2 простым ограничениям: Класс должен иметь конструктор по умолчанию, который не принимает аргументов Класс должен определять публичные методы получения для назначаемых свойств. Свойства без общедоступного метода получения будут установлены в значения по умолчанию при десериализации экземпляра Пример класса может выглядеть так:

 class Message {
     private String author;
     private String text;

     private Message() {}

     public Message(String author, String text) {
         this.author = author;
         this.text = text;
     }

     public String getAuthor() {
         return author;
     }

     public String getText() {
         return text;
     }
 }


 // Later
 Message m = snapshot.getValue(Message.class);
0 голосов
/ 14 июня 2019

Вы можете использовать String class

public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()) {
        String name= ds.child("name").getValue(String.class);
        String age= ds.child("age").getValue(String.class);
        //and similar for others
        Log.d("TAG", email + " / " + name);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...