#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
Я добавляю функцию, позволяющую пользователю удалять свой комментарий, который со следующим кодом работает нормально, НО удаляет комментарий только один раз. Сказать, что я открываю свою CommentActivity
и там я написать 3 комментария, а потом я решу, удалите все 3 или 2, так что происходит, когда он позволяет мне снять 1 комментарий, который получает удален и удален сразу же, но другие я должен выйти CommentActivity
и снова войти на комментарии, которые я попытался удалить, ушел. Я хочу иметь возможность удалять ВСЕ комментарии и чтобы они исчезли сразу.
Кто-нибудь может сказать мне, почему / как это исправить?
CommentsActivity
private void readComments() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Comments").child(mPostId);
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Comment comment = dataSnapshot.getValue(Comment.class);
try {
comment.setComment(decrypt(comment.getComment(), mPassword));
} catch (Exception e) {
e.printStackTrace();
}
mCommentList.add(comment);
keysList.add(dataSnapshot.getKey());
mCommentAdapter.notifyItemInserted(mCommentList.size() - 1);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
int index = keysList.indexOf(dataSnapshot.getKey());
mCommentList.remove(index);
keysList.remove(index);
mCommentAdapter.notifyDataSetChanged();
mCommentAdapter = new CommentAdapter(getApplicationContext(), mCommentList, mPostId);
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
reference.addChildEventListener(childEventListener);
}