J'utilise Cloud Firestore comme suit :
La collection "events" contient des documents dont le nom est un identifiant unique d'événement. Ces documents contiennent de nombreux objets 'EventComment', chacun représentant un commentaire fait par un utilisateur.
Pour ajouter l'objet 'EventComment' aux documents, j'utilise ce qui suit :
EventComment mcomment = new EventComment();
mcomment.setComment("this is a comment");
Map<String, EventComment> eventMap = new HashMap<>();
eventMap.put(Long.toHexString(Double.doubleToLongBits(Math.random())), mcomment);
firestore.collection("events").document(event_id)
.set(eventMap, SetOptions.merge()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(EventCommentsActivity.this, "ya bastud", Toast.LENGTH_SHORT).show();
}
});
Je crée un HashMap
de String et de mon objet 'EventComment', puis de le placer dans le document.
Cependant, lorsque je veux récupérer tous les objets 'EventComment' contenus dans un document donné, je ne peux pas le transformer en un objet EventComment, c'est-à-dire que je ne peux pas le faire :
DocumentReference docRef = db.collection("events").document("vvG17ZfcLFVna8");
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
EventComment comment = documentSnapshot.toObject(EventComment.class);
}
});
De plus, la tentative de convertir le documentSnapshot en un HashMap donne un message "unchecked cast" et tombe finalement à plat. L'idée est d'utiliser les commentaires pour alimenter un RecyclerView.
Je pense que je dois peut-être restructurer la façon dont je stocke les données ?
Toute suggestion serait grandement appréciée.
Cheers