重写融云会话列表

来源:互联网 发布:好听的淘宝客服名称 编辑:程序博客网 时间:2024/06/05 04:50

又有新技术点要来了。之前做的聊天功能只是能聊,与实际上的需要还是差点。现在需要重写会话列表的item,总得知道跟谁聊吧。不怪产品麻烦,积极修改,虽然依旧还没解决,但博客老样子先开始,边研究边写。等会儿哈,我刚看过了官方文档,不是很懂,接下来要看看官方demo,且等我研究下。稍等片刻。。。。

正文

/**     * 自定义聊天会话的模型类     */    @ConversationProviderTag(conversationType = "group", portraitPosition = 1)    static public class MyPrivateConversationProvider extends PrivateConversationProvider {        @Override        public View newView(Context context, ViewGroup group) {            return super.newView(context, group);        }        @Override        public void bindView(View v, int position, UIConversation data) {            if (data.getConversationType().equals(Conversation.ConversationType.GROUP)) {                data.setUnreadType(UIConversation.UnreadRemindType.REMIND_ONLY);                //设置会话发送者ID、会话标题、会话头像URL                String targetid = data.getConversationTargetId();                ConsultationActivity consultationActivity = new ConsultationActivity();                consultationActivity.getInfoOfCreateGroupUser(targetid);                if(ClientMemberList!=null&&ClientMemberList.size()!=0){                    data.setIconUrl(Uri.parse(ClientMemberList.get(position).getHeadPortrait()+""));                    data.setUIConversationTitle(ClientMemberList.get(position).getUserName());                    RongIM.getInstance().refreshGroupInfoCache(new Group(targetid + "", ClientMemberList.get(position).getUserName(),                            Uri.parse(ClientMemberList.get(position).getHeadPortrait()+"")));                    /**                     * 刷新用户缓存数据。                     *                     * @param userInfo 需要更新的用户缓存数据。                     */                    RongIM.getInstance().refreshUserInfoCache(                            new UserInfo(ClientMember.getUserId() + "",                                    ClientMember.getUserName(), Uri.parse(ClientMember.getHeadPortrait()+"")));                }            }            super.bindView(v, position, data);        }    }
  • 现在我知道在调起会话列表页面重写这个方法就给data设置title、url就可以给item设置值。
  • 而@ConversationProviderTag(conversationType = “group”, portraitPosition = 1)这一行的portraitPosition 可以改变参数俩设置item不同布局,之前理解有误,并不需要重写,这种方式也不算是重写,就是塞值。
  • consultationActivity.getInfoOfCreateGroupUser(targetid);这里的targetId是聊天群组id,我利用它向服务器请求到发起者的姓名和头像设置为群组会话列表item的title和url;
  • 注意在Application里调用一下:RongIM.getInstance().registerConversationTemplate(new ConsultationActivity.MyPrivateConversationProvider());
  • 但现在出现的问题是:我刚打开会话界面时显示的不是我获取的数据而是这样的
    这里写图片描述
    在我点击item之后数据或更新,但是再重新进入后有变成了上一张图的样子:这里写图片描述

怀疑

现在我想可能是我之前一直不好好做用户信息提供者出的问题,就像我聊天界面里的对方头像只有他和我说话我才能看见,而刚打开的时候显示的就是他的id。看来得重新理一下各种提供者了。昨天经理给我提了几个需求要改,这个先放一下,改完那个再继续。。。