Я добавил функцию комментирования в своем блоге. Я получил комментарии от RecyclerView и сделал orderBy("timestamp")
, так как новые комментарии показывают верх.
Я использую Firebase Firestore, после получения всех комментариев. Когда пользователь публикует новые комментарии, я хочу, чтобы комментарий показывался сверху . но, как правило, комментарий добавляет нижнюю часть списка, так что в основном он отображается внизу окна повторного просмотра.
Я использовал приведенный ниже код, чтобы показать новый комментарий вверху Но, к сожалению, все комментарии переходят к выражению Else
вместо нового комментария:
if (isFirstLoad) {
userList.add(userInfo);
commentList.add(commentInfo);
}else{
userList.add(0, userInfo);
commentList.add(0, commentInfo);
}
Весь код для получения комментариев:
Query query = db.collection("BlogPosts/" + postId + "/Comments").orderBy("timestamp", Query.Direction.DESCENDING);
query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if (queryDocumentSnapshots!=null && !queryDocumentSnapshots.isEmpty()){
for (DocumentChange doc: queryDocumentSnapshots.getDocumentChanges()){
if (doc.getType() == DocumentChange.Type.ADDED){
final BlogCommentInfo commentInfo = doc.getDocument().toObject(BlogCommentInfo.class);
String BlogUserId = doc.getDocument().getString("user_id");
db.collection("Users").document(BlogUserId).get().addOnCompleteListener(CommentActivity.this, new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()){
UsersInfo userInfo = task.getResult().toObject(UsersInfo.class);
if (isFirstLoad) {
userList.add(userInfo);
commentList.add(commentInfo);
}else{
userList.add(0, userInfo);
commentList.add(0, commentInfo);
}
adapter.notifyDataSetChanged();
}else{
Toast.makeText(CommentActivity.this, "Error: "+task.getException(), Toast.LENGTH_LONG).show();
}
}
});
}
}
}
isFirstLoad = false;
}
});
Пожалуйста, помогите мне решить эту проблему.
Или Дайте мне знать, если у вас есть какой-либо другой способ показать более новый комментарий в верхней части recyclerview.