gpt4 book ai didi

java - 当用户不喜欢评论时,该用户的所有通知都会从数据库中删除,而不是仅删除该特定通知

转载 作者:行者123 更新时间:2023-12-02 08:40:18 28 4
gpt4 key购买 nike

编写了一种新方法来删除用户收到的通知(如果其他用户喜欢他们的帖子、评论或喜欢他们的评论等)。问题是帖子通知正在添加到数据库中,但是当我为例如“不像”评论(点击 ImageView),然后与它不同的是,带有特定 ID 的通知不会从数据库中删除,我不确定为什么会这样。例如,当我“不喜欢”某个帖子时,该用户的所有通知都会被删除,而只有因为我喜欢该帖子而发送的通知才应该被删除,而其他通知则保持不变。

有人可以告诉我为什么会发生这种情况以及如何解决它吗?

enter image description here

PostAdapter

holder.like.setOnClickListener(v -> {
if (holder.like.getTag().equals("like")) {
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid()).child(mFirebaseUser.getUid()).setValue(true);
addNotification(post.getPublisher(), post.getPostid());
} else {
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid()).child(mFirebaseUser.getUid()).removeValue();
deleteNotification(post.getPublisher());
}
});

private void deleteNotification(String userId) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Notifications");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Notification notification = snapshot.getValue(Notification.class);
if (notification != null) {
reference.child(userId).child(notification.getNotificationId()).removeValue();
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

最佳答案

正如我所见,当您使用函数addLikeNotification()时,然后为notifid分配最后一个push()键。当您尝试删除任何通知时,notifid 中仍使用最后一个值。

您可以做的是在布局中创建新字段(例如 TextView),为其设置 notifid 并将其可见性设置为 GONE

当您尝试删除值时,首先将该字段中的文本分配给 notifid,然后删除您的通知

关于java - 当用户不喜欢评论时,该用户的所有通知都会从数据库中删除,而不是仅删除该特定通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61421635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com