mImageLike.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mProcessLike = true;
//mLikeCount.setText("numLikes");
mDatabaseLike.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(mProcessLike)
{
if(dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid()))
{
mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
numLike--;
mProcessLike = false;
}
else
{
mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue("Liked");
mProcessLike = false;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
mDatabaseLike.addChildEventListener(new ChildEventListener()
{
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s)
{
numLike = dataSnapshot.getChildrenCount();
mDatabaseLike.child(post_key).child("numLike").setValue(numLike);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s)
{
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot)
{
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s)
{
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
}
});
当按下按钮时,我正在努力增加计数,并将该计数数字存储到数据库中" Like"。我已经声明了DatabaseReference mDatabaseLike,它看起来像这样。
我正在尝试计算每个孩子的数量(使用"喜欢"字符串)并将它们存储到每个键(例如Kb6cSLImN_7lrPyAr2Q)中作为numLike。当我单击按钮时,它会更新计数,但是当我再次单击该按钮以删除它时,数字不会减少。
请帮忙!非常感谢你。
答案 0 :(得分:0)
您应该从onClickListener中删除ChildEventListener,以便始终跟踪Likes。你也永远不会减少数量,你只是在本地改变它。您必须按照以下方式设置值:Example Domain</title> <!-- <====missing tag in this line -->
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 50px;
background-color: #fff;
border-radius: 1em;
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
body {
background-color: #fff;
}
div {
width: auto;
margin: 0 auto;
border-radius: 0;
padding: 1em;
}
}
</style>
我还建议不要跟踪这样的喜欢,而是使用Transactions。它将处理两个用户同时点击Like的情况。根据您当前的实现,如果两个用户同时点击它,一个会覆盖另一个,只会增加一个而不是两个。