我有一个简单的场景,如果当前用户对帖子发表了评论,我必须显示绿色图标,否则显示深色图标,逻辑是

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在Post_1上发表评论时使用此代码,这太棒了,但是它有效,但是当其他用户USER_2在Post_1上发表评论时,commentImageView图标变成USER_2的设备变成绿色,但是commentImageView的图标在USER_1的设备上变暗

android - ChildEventListener引起奇怪的行为-LMLPHP

正如您所看到的,这就是我面临的问题,我想在每个用户的commentImageView上显示绿色图标,而不是在帖子最后发表评论的单个用户的绿色图标,我应该在哪里进行更改以使此ChildEventListener正常工作,任何进一步的细节将根据要求提供。

最佳答案

当用户登录时初始化视图时,我只会设置一次深色(何时需要从绿色变为深色?)。然后,您的着色逻辑可以简化为:

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

07-26 09:33