Проблема в вашем коде заключается в том, что в вашем классе ALL_USERS
есть поле с именем Date
, но вы используете геттер с именем getDate()
, что неверно, поскольку Firebase ищет в базе данныхполе с именем date
, а не Date
.См. Строчную d
букву против заглавной буквы D
?
Существует два способа решения этой проблемы.Первым из них будет изменение класса вашей модели путем переименования полей в соответствии с Java Naming Conventions .Таким образом, ваш класс модели должен выглядеть следующим образом:
public class ALL_USERS {
private String name, sonyTV;
private long date;
public ALL_USERS() {}
public ALL_USERS(String name, String sonyTV, long date) {
this.name = name;
this.sonyTV = sonyTV;
this.date = date;
}
public String getName() { return name; }
public String getSonyTV() { return sonyTV; }
public long getDate() { return date; }
}
Смотрите в этом примере, есть private
поля и открытые методы получения.Существует также более простое решение - установить значение непосредственно в открытых полях, например так:
public class ALL_USERS {
public String name, sonyTV;
public long date;
}
Теперь просто удалите текущие данные и добавьте их снова, используя правильные имена.Это решение будет работать, только если вы находитесь на этапе тестирования.
Существует также второй подход, который заключается в использовании annotations
.Поэтому, если вы предпочитаете использовать частные поля и общедоступные методы получения, вы должны использовать аннотацию PropertyName только перед объектом получения.Итак, ваш ALL_USERS
класс должен выглядеть так:
public class ALL_USERS {
private String name, SonyTV;
private long Date;
public ALL_USERS() {}
public ALL_USERS(String name, String sonyTV, long date) {
this.name = name;
SonyTV = sonyTV;
Date = date;
}
public String getName() { return mame; }
@PropertyName("SonyTV")
public String getSonyTV() { return SonyTV; }
@PropertyName("Date")
public long getDate() { return Date; }
}