Проблема в вашем коде заключается в том, что имена полей в вашем классе CommentModel
отличаются от имен свойств в вашей базе данных.В вашем классе CommentModel
есть поле с именем comment
, но в вашей базе данных я вижу его как Comment
, и это неверно.Имена должны совпадать.Когда вы используете метод получения с именем getComment()
, Firebase ищет в базе данных поле с именем comment
, а не Comment
.См. Строчную c
букву против заглавной буквы C
?
Существует два способа решения этой проблемы.Первым из них будет изменение класса модели путем переименования полей в соответствии с Java Naming Conventions .Таким образом, ваш класс модели должен выглядеть следующим образом:
public class CommentModel {
private String comment, commentDate, profilePic, commentUser;
public CommentModel() {}
public CommentModel(String comment, String commentDate, String profilePic, String commentUser) {
this.comment = comment;
this.commentDate = commentDate;
this.profilePic = profilePic;
this.commentUser = commentUser;
}
public String getComment() { return comment; }
public String getCommentDate() { return commentDate; }
public String getProfilePic() { return profilePic; }
public String getCommentUser() { return commentUser; }
}
Смотрите в этом примере, есть private
поля и открытые методы получения.Существует также более простое решение - установить значение непосредственно в открытых полях, например так:
public class CommentModel {
public String comment, commentDate, profilePic, commentUser;
}
Теперь просто удалите текущие данные и добавьте их снова, используя правильные имена.Это решение будет работать, только если вы находитесь на этапе тестирования.
Существует также второй подход, который заключается в использовании annotations
.Поэтому, если вы предпочитаете использовать частные поля и общедоступные методы получения, вы должны использовать аннотацию PropertyName только перед объектом получения.Итак, ваш CommentModel
класс должен выглядеть следующим образом:
public class CommentModel {
private String comment, commentDate, profilePic, commentUser;
public CommentModel() {}
public CommentModel(String comment, String commentDate, String profilePic, String commentUser) {
this.comment = comment;
this.commentDate = commentDate;
this.profilePic = profilePic;
this.commentUser = commentUser;
}
@PropertyName("Comment")
public String getComment() { return comment; }
@PropertyName("CommentDate")
public String getCommentDate() { return commentDate; }
@PropertyName("ProfilePic")
public String getProfilePic() { return profilePic; }
@PropertyName("CommentUser")
public String getCommentUser() { return commentUser; }
}
Не забудьте также начать прислушиваться к изменениям.
PS В вашем классе это должно быть:
this.commentDate = commentDate;
а не:
commentDate = commentDate;