Я искал два часа, и я поражен, что нет простого способа получить Timestamp
из Firebase с помощью пользовательского класса.
Вот как выглядит документ, который я получаю:
У меня есть для этого документа простой пользовательский класс:
import com.google.firebase.Timestamp;
import java.util.List;
public class CapObj {
private String content;
private List<String> tags;
private Timestamp created_at;
public CapObj () {}
public CapObj (String content, List<String> tags, Timestamp created_at){
this.content = content;
this.tags = tags;
this.created_at = created_at;
}
public String getContent() {
return content;
}
public List<String> getTags() {
return tags;
}
public Timestamp getCreatedAt() {
return created_at;
}
}
, и я заполняю свой список следующим методом:
private void populateDatasetFromQuery(Task<QuerySnapshot> task){
ArrayList<Caption> results = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
CapObj capObj = document.toObject(Caption.class);
results.add(caption);
}
capObjList = new ArrayList<>(results);
}
Итак, проблема в том, что когда я пытаюсь использовать capObj.getContent()
, я получаю контент, но когда я делаю capObj.getCreatedAt().toDate()
, я получаю:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.Date com.google.firebase.Timestamp.toDate()' on a null object reference
. хотя объект, полученный из запроса Firebase, выглядит следующим образом:
{created_at=Timestamp(seconds=1583017200, nanoseconds=0), content=Travel 2, tags=[travel]}
Мне кажется, что created_at
не заполняется при создании объекта. Что я здесь не так делаю?