其中有一个应用程序。点赞,操作如下:
postReference = firebaseDatabase.getInstance().getReference().child("Posts");
holder.likeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final DatabaseReference likeReference = postReference.child(listUserId).child("Likes");
likeReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (!dataSnapshot.hasChild(currentUserId)) {
likeReference.child(currentUserId).removeValue();
} else {
likeReference.child(currentUserId).setValue("Like");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
问题在于,按下按钮后,数据库中的记录开始添加和删除而没有停止。如何解决?我的数据库:
答案 0 :(得分:0)
要解决此问题,请更改以下代码行:
Home1
到
likeReference.addValueEventListener(new ValueEventListener() {}
请参阅addListenerForSingleValueEvent官方文档:
为该位置的数据中的单个更改添加一个侦听器。
使用likeReference.addListenerForSingleValueEvent(new ValueEventListener() {}
意味着您始终保持监听器处于活动状态。要删除收听者,请从此 post 中查看我的答案。