2017-03-15 52 views
1

我已經簡單的場景,在那裏我已經表明綠色圖標,如果當前用戶評論後否則顯示圖標的邏輯是ChildEventListener導致怪異的行爲

mCommentChildEventListener = new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       try{ 
        if (dataSnapshot.exists() && dataSnapshot.hasChildren() && !dataSnapshot.equals(null)){ 
         Comment comment = dataSnapshot.getValue(Comment.class); 
         if (comment.getPostId().equals(mPostId)){ 
          mCommentList.add(comment); 
          mCommentAdapter.notifyDataSetChanged(); 

          if (!comment.getUid().equals(Utils.getCurrentUser())){ 
           commentImageView.setImageDrawable(getDrawable(R.drawable.ic_comment_dark)); 
          } else { 
           commentImageView.setImageDrawable(getDrawable(R.drawable.ic_comment_green));         
          } 

          commentTextView.setText(String.valueOf(mCommentList.size())); 
         } 

        } else { 
         /// 
        } 
       } catch (Exception e){ 
        e.printStackTrace(); 
       } 
      } 

      //omitting other @overide methods 
     }; 

使用此代碼說讓用戶USER_1對帖子的評論commentImageView的圖標在設備上變爲綠色USER_1,這真棒,它的工作原理,但當其他用戶USER_2評論在帖子commentImag的圖標EVIEW變成綠色的USER_2設備,但commentImageView的圖標變暗的USER_1

enter image description here

這是我面對的,你可以看到這個問題在設備上,我想展示每個用戶的commentImageView上的綠色圖標,而不是最後在帖子中評論的單個用戶,我應該在哪裏進行更改,以便此ChildEventListener正常工作,並且可以根據請求提供更多詳細信息。

回答

1

我只會在用戶登錄時初始化視圖時設置一次深色(無論如何您需要從綠色變爲黑色?)。那麼你的着色邏輯簡化爲:

if (comment.getUid().equals(Utils.getCurrentUser())){ 
    commentImageView.setImageDrawable(getDrawable(R.drawable.ic_comment_green)); 
} 
+0

感謝很多人,我花了調試這個問題時,卻讓它變得更簡單,非常感謝 –

+1

@ArshadAli當然,很高興它的工作。我在這裏解決了很多這樣的問題,有時候需要一整套新的眼睛。 – samosaris

+0

O男人! __一套新鮮的眼睛是有時候需要的,哈哈哈說得好... –