重写融云会话列表

又有新技术点要来了。之前做的聊天功能只是能聊,与实际上的需要还是差点。现在需要重写会话列表的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。看来得重新理一下各种提供者了。昨天经理给我提了几个需求要改,这个先放一下,改完那个再继续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值