網站首頁 編程語言 正文
一、概述
最近在處理環信聊天時,需要修改聊天頁面的用戶昵稱和頭像,在網上搜索解決方案,發現沒有合適,要么看不懂,要么代碼太復雜,沒辦法,只能發揮自己的聰明才智動手解決了。
項目里的環信是基于V3.x的,項目里的聊天包括單聊和群組聊天,所以要同時兼顧這兩種模式。
二、解決方法
1.首先我們在easyui庫里添加兩個類:
package com.hyphenate.easeui.model; /** ?* author: chenzheng ?* created on: 2017/7/26 17:11 ?* description: ?*/ public class EaseMember { ? ? public String member_hxid; ? ? public String member_headphoto; ? ? public String member_nickname; }
package com.hyphenate.easeui.utils; import com.hyphenate.easeui.model.EaseMember; import java.util.ArrayList; import java.util.List; /** ?* author: chenzheng ?* created on: 2017/7/26 17:04 ?* description: ?*/ public class EaseGlobal { ? ? public static List<EaseMember> memberList = new ArrayList<>(); }
2.環信自己也說了環信不保存項目的用戶信息,所以這里我們需要在自己的項目里處理。
如果是一對一聊天,我們就獲取好友列表(網絡請求),并賦值:
List<EaseMember> memberList = new ArrayList<>(); ? ? ? ? ? for(HxContact hc : contactList){ ? ? ? ? ? ? ? ? EaseMember em = new EaseMember(); ? ? ? ? ? ? ? ? ? em.member_hxid = hc.username; ? ? ? ? ? ? ? ? ? em.member_headphoto = Api.IMAGE_DOMAIN_URL+hc.headPhoto; ? ? ? ? ? ? ? ? ? em.member_nickname = hc.name; ? ? ? ? ? ? ? ? memberList.add(em); ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? //添加自己的頭像和昵稱信息 ? ? ? ? ? ? ? ? ? ? EaseMember em2 = new EaseMember(); ? ? ? ? ? ? ? ? ? ? em2.member_hxid = Global.userData.user.hxUserName; ? ? ? ? ? ? ? ? ? ? em2.member_headphoto = Api.IMAGE_DOMAIN_URL+Global.userData.user.headPhoto; ? ? ? ? ? ? ? ? ? ? em2.member_nickname = Global.userData.user.loginName; ? ? ? ? ? ? ? ? ? ? memberList.add(em2); ? ? ? ? ? ? ? ? ? ? EaseGlobal.memberList = memberList;
如果是群組聊天,我們就獲取該群組的成員列表(網絡請求),并賦值:
List<EaseMember> memberList = new ArrayList<>(); ? ? ? ? ? for(TeamMember tm : groupMemberList){ ? ? ? ? ? ? ? ? ? EaseMember em = new EaseMember(); ? ? ? ? ? ? ? ? ? ? em.member_hxid = tm.chatUsername; ? ? ? ? ? ? ? ? ? ? em.member_headphoto = Api.IMAGE_DOMAIN_URL+tm.headPhoto; ? ? ? ? ? ? ? ? ? ? em.member_nickname = tm.mgName; ? ? ? ? ? ? ? ? ? ? ?memberList.add(em); ? ? ? ? ? ? ?} ? ? ? ? //添加自己的頭像和昵稱信息 ? ?EaseMember em2 = new EaseMember(); ? ?em2.member_hxid = Global.userData.user.hxUserName; ? ?em2.member_headphoto = Api.IMAGE_DOMAIN_URL+Global.userData.user.headPhoto; ? ?em2.member_nickname = Global.userData.user.loginName; ? ?memberList.add(em2); EaseGlobal.memberList = memberList;
3.最后一步,離成功一步之遙啦!找到EaseChatRow類,在setUpBaseView()方法中將
修改成:
//set nickname and avatar ? ? ? ? if(EaseGlobal.memberList.size()>0){ ? ? ? ? ? ? if (message.direct() == Direct.SEND) { ? ? ? ? ? ? ? ? for(EaseMember em : EaseGlobal.memberList){ ? ? ? ? ? ? ? ? ? ? if(em.member_hxid.equals(EMClient.getInstance().getCurrentUser())){ ? ? ? ? ? ? ? ? ? ? ? ? Glide.with(context).load(em.member_headphoto).into(userAvatarView); ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? for(EaseMember em : EaseGlobal.memberList){ ? ? ? ? ? ? ? ? ? ? if(em.member_hxid.equals(message.getFrom())){ ? ? ? ? ? ? ? ? ? ? ? ? Glide.with(context).load(em.member_headphoto).into(userAvatarView); ? ? ? ? ? ? ? ? ? ? ? ? usernickView.setText(em.member_nickname); ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }else { ? ? ? ? ? ? if (message.direct() == Direct.SEND) { ? ? ? ? ? ? ? ? EaseUserUtils.setUserAvatar(context, EMClient.getInstance().getCurrentUser(), userAvatarView); ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? EaseUserUtils.setUserAvatar(context, message.getFrom(), userAvatarView); ? ? ? ? ? ? ? ? EaseUserUtils.setUserNick(message.getFrom(), usernickView); ? ? ? ? ? ? } ? ? ? ? }
三、總結
這種解決方法我認為非常的棒,有木有,擴張性高,對任意項目都適用,而且,不會影響原有功能!
今天的分享就到這里,感謝閱讀!
原文鏈接:https://blog.csdn.net/chenzheng8975/article/details/76155926
相關推薦
- 2022-04-19 8個實用的Python程序你知道幾個_python
- 2022-10-15 淺談React?useDebounce?防抖原理_React
- 2022-07-11 Linux刪除某個字母開頭的所有文件
- 2022-08-01 Android?WebView軟鍵盤遮擋輸入框方案詳解_Android
- 2022-12-22 關于Python?ImportError:?No?module?named?通用解決方法_pytho
- 2022-09-09 python中.format()方法使用詳解_python
- 2022-06-07 如何在Python中妥善使用進度條詳解_python
- 2023-03-27 Android?Framework原理Binder驅動源碼解析_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支