如何在Firebase中设置类似功能?

时间:2018-11-10 09:29:34

标签: java android firebase firebase-realtime-database

其中有一个应用程序。点赞,操作如下:

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) {
            }
        });
    }
}

问题在于,按下按钮后,数据库中的记录开始添加和删除而没有停止。如何解决?我的数据库:

my_database

1 个答案:

答案 0 :(得分:0)

要解决此问题,请更改以下代码行:

Home1

likeReference.addValueEventListener(new ValueEventListener() {}

请参阅addListenerForSingleValueEvent官方文档:

  

为该位置的数据中的单个更改添加一个侦听器。

使用likeReference.addListenerForSingleValueEvent(new ValueEventListener() {} 意味着您始终保持监听器处于活动状态。要删除收听者,请从此 post 中查看我的答案。