Я рекомендую объединить ваши комментарии в одну коллекцию верхнего уровня Comments
, а не хранить их под постом. Это позволит вам выполнять множество полезных операций поиска, таких как поиск по всем комментариям по пользователю или сообщению или даже создание канала «недавно активных сообщений».
Для этого вам необходимо изменить структуру базы данных таким образом, чтобы что все комментарии хранятся вместе с постом, к которому они прикреплены.
{
content: "...",
timestamp: 1234534568425,
postId: "...",
uid: "...",
uimg: "...",
uname: "..."
}
После того, как вы это сделали, теперь вы можете запрашивать комментарии по почте, используя:
private final int PAGE_SIZE = 10;
private void iniRvComment() {
RvComment.setLayoutManager(new LinearLayoutManager(this));
firestore.collection("Comments") // this is a top level collection
.whereEqualTo("postId", postKey) // select comments for given post
.orderBy("timestamp", Query.Direction.DESCENDING) // order newest to oldest
.limit(PAGE_SIZE) // fetch up to PAGE_SIZE recent comments
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot results,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w(TAG, "Listen failed.", e);
return;
}
listComment = new ArrayList<>(PAGE_SIZE);
for (QueryDocumentSnapshot commentDoc : results) {
Comment commentObj = commentDoc.toObject(Comment.class);
listComment.add(commentObj);
}
commentAdapter = new CommentAdapter(getApplicationContext(), listComment);
RvComment.setAdapter(commentAdapter);
Log.d(TAG, "Retrieved " + results.size() + " recent comments.");
}
});
}