Я пытаюсь получить вложенные данные в этом случае
Миссия класса:
public class Mission implements Serializable {
private String body;
private String name;
private Integer vote;
private List<Comment> comments;
private int completedby;
Mission() {
}
public String getBody() {
return body;
}
public int getCompletedby() {
return completedby;
}
public String getName() {
return name;
}
public Integer getVote() {
return vote;
}
public List<Comment> getComment() {
return comments;
}
}
Класс комментариев:
public class Comment {
private String body;
private String username;
private int vote;
public Comment(){}
public String getBody() {
return body;
}
public String getUsername() {
return username;
}
public int getVote() {
return vote;
}
}
Так я получаю данные. Я не могу получить доступ к телу комментариев. Я могу получить доступ к свойствам миссий по пути. (Кроме списка комментариев с нулевым значением)
mydb.child("missions").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
missionMap.put(childSnapshot.getKey(),childSnapshot.getValue(Mission.class));
}
Log.d("working",missionMap.get(missionMap.keySet().toArray()[0]).getBody()); // working
Log.d("comment",missionMap.get(missionMap.keySet().toArray()[0]).getComment().get(0).getBody()); // not working
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
И выдается ошибка.
java.lang.NullPointerException: попытка вызвать метод интерфейса
'java.util.Set java.util.Map.keySet ()' для пустой ссылки на объект
По какой-то причине List имеет значение null. Он не заполнен объектами комментариев.
UPDATE
Я обнаружил проблему с моим кодом. В моем коде комментарии появляются как HashMap. Я действительно не забочусь о комментариях id. Я просто хочу сохранить их как List.But, они приходят как hashmap. Как получить их в виде списка без их идентификаторов? (например, cid) Так что все комментарии хранятся в виде объекта комментария внутри списка. Это то, что я пытаюсь сделать. Я могу легко конвертировать значения hashmap в список, но, возможно, есть другой способ сделать это