ChildEventListener导致奇怪的行为

时间:2017-03-15 19:21:01

标签: android firebase firebase-realtime-database

我是一个简单的场景,如果当前用户已对帖子进行评论,那么我将显示绿色图标显示 dark 图标逻辑是

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 评论时,commentImageView的图标变为绿色 USER_2 的设备,但 USER_1设备上的commentImageView图标变暗

enter image description here

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

1 个答案:

答案 0 :(得分:1)

我只会在用户登录时初始化视图时设置一次深色(无论如何你还需要从绿色变为暗色?)。然后你的着色逻辑简化为:

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