我有一个简单的场景,如果当前用户对帖子发表了评论,我必须显示绿色图标,否则显示深色图标,逻辑是
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的设备上变暗
正如您所看到的,这就是我面临的问题,我想在每个用户的commentImageView上显示绿色图标,而不是在帖子最后发表评论的单个用户的绿色图标,我应该在哪里进行更改以使此ChildEventListener正常工作,任何进一步的细节将根据要求提供。
最佳答案
当用户登录时初始化视图时,我只会设置一次深色(何时需要从绿色变为深色?)。然后,您的着色逻辑可以简化为:
if (comment.getUid().equals(Utils.getCurrentUser())){
commentImageView.setImageDrawable(getDrawable(R.drawable.ic_comment_green));
}