android有两种方法,一种是有完善的数据系统保存用户信息,一种是设置属性,在发送消息的时候携带自身信息。
这里我要讲的是第二种,并且只适用于重写ConversationListAdapter的情况下。核心是:
RongIM.getInstance().setCurrentUserInfo(info);
RongIM.getInstance().setMessageAttachedUserInfo(true);
这两个属性设置携带自身信息。上篇文章说道通过RongIM.getInstance().getConversationList()来拿到会话列表的,那么就需要发送和接收融云消息的监听了,在监听里更新会话集合。这里就需要注意了,陌生人发送消息后,在接收消息的监听里面拿到会话,会话里面再拿到content,content再拿到userInfo,这里的userInfo是陌生人的,但是,如果你发送消息监听里也更新了会话集合,那么,当你点进陌生人的会话界面并回复消息,那么返回后,会话列表显示的就是自己的昵称和头像了。那么问题就来了,要怎么解决这个问题呢?其实很简单,说白了,就是回复消息刷新了userInfo导致的,那么,我们就在发送消息的监听里判断一下,如果集合数量没有变,我们就不刷新集合。