2017-03-15 5 views
1

Ich habe einfaches Szenario, wo ich grün Symbol zu zeigen habe, wenn der aktuelle Benutzer auf Post kommentiert anderes dunkel Symbol zeigt die Logik istChildEventListener verursachen seltsames Verhalten

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

dies mit Code, wenn sagen Benutzer USER_1 Kommentare auf der Post das Symbol von commentImageView wird grün auf dem Gerät von USER_1, das ist genial funktioniert, aber wenn der andere Benutzer USER_2 Kommentare auf der Post das Symbol von commentImag eView wird grün das Gerät von USER_2, sondern Symbol des commentImageView dunkel wird auf dem Gerät von USER_1

enter image description here

, dass das Problem ist, ich bin mit Blick auf, wie Sie sehen können, ich will zeigen, grünes Symbol auf commentImageView für jeden Benutzer, nicht für den einzelnen Benutzer, der als letzter auf dem Beitrag kommentiert hat, wo sollte ich Änderungen vornehmen, damit dieser ChildEventListener richtig funktioniert, weitere Details werden auf Anfrage gegeben.

Antwort

1

Ich würde die dunkle Farbe nur einmal beim Initialisieren der Ansicht einstellen, wenn sich der Benutzer anmeldet (wann immer müssen Sie sowieso von grün zu dunkel gehen?). Dann Ihre Färbung Logik vereinfacht sich zu:

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

Vielen Dank Mann, ich verbrachte Stunden auf dem Debuggen dieses Problem, aber machte es einfach, Dank viel –

+1

@ArshadAli Sicher, froh, es funktionierte. Ich habe eine Menge Probleme wie diese hier gelöst, ein frisches Auge ist alles was es manchmal braucht. – samosaris

+0

O Mann! __ eine frische Reihe von Augen ist alles, was es manchmal braucht__, hahaha gut gesagt ... –