2017-01-23 29 views
2
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) 
       { 

       } 
      }); 
     } 
    }); 

當像按鈕被按下時,我正在增加計數掙扎,並將該計數數字存儲到數據庫「喜歡」。我已經聲明瞭DatabaseReference mDatabaseLike,它看起來像這樣。 mDatabaseLike有沒有一種方法可以統計Firebase數據庫中的兒童人數?

我試圖計算每個喜歡的孩子的數量(與「喜歡」的字符串),並將它們存儲到每個鍵(如Kb6cSLImN_7lrPyAr2Q)作爲numLike。當我點擊按鈕時,它會更新計數,但是當我再次單擊按鈕以刪除時,該數字不會減少。

請幫忙!非常感謝你。

回答

0

您應該從onClickListener中刪除ChildEventListener,以便始終跟蹤喜歡。你也不會減少類似的數量,你只是在本地改變它。你必須設置這個值,一旦你減少它像這樣:mDatabaseLike.child(post_key).child('numLike').setValue(numLike);

我也建議不跟蹤喜歡那樣的喜歡,並使用Transactions來代替。它將處理兩個用戶同時點擊Like的情況。在目前的實施中,如果兩個用戶同時點擊它,就會像覆蓋另一個用戶一樣,只增加一個而不是兩個。

相關問題