網(wǎng)站首頁 編程語言 正文
一、概述
最近在處理環(huán)信聊天時,需要修改聊天頁面的用戶昵稱和頭像,在網(wǎng)上搜索解決方案,發(fā)現(xiàn)沒有合適,要么看不懂,要么代碼太復(fù)雜,沒辦法,只能發(fā)揮自己的聰明才智動手解決了。
項目里的環(huán)信是基于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.環(huán)信自己也說了環(huán)信不保存項目的用戶信息,所以這里我們需要在自己的項目里處理。
如果是一對一聊天,我們就獲取好友列表(網(wǎng)絡(luò)請求),并賦值:
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;
如果是群組聊天,我們就獲取該群組的成員列表(網(wǎng)絡(luò)請求),并賦值:
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); ? ? ? ? ? ? } ? ? ? ? }
三、總結(jié)
這種解決方法我認(rèn)為非常的棒,有木有,擴(kuò)張性高,對任意項目都適用,而且,不會影響原有功能!
今天的分享就到這里,感謝閱讀!
原文鏈接:https://blog.csdn.net/chenzheng8975/article/details/76155926
相關(guān)推薦
- 2022-11-14 Android開發(fā)RecyclerView單獨刷新使用技巧_Android
- 2022-10-03 利用正則表達(dá)式校驗金額最多保留兩位小數(shù)實例代碼_正則表達(dá)式
- 2022-06-10 Asp.Net?Core使用Ocelot結(jié)合Consul實現(xiàn)服務(wù)注冊和發(fā)現(xiàn)_實用技巧
- 2022-06-08 4. Golang常用Http庫及Gin框架入門
- 2022-01-29 yii SearchModel關(guān)于關(guān)聯(lián)表字段的查詢方法
- 2022-08-30 android屏幕適配sw規(guī)則
- 2022-01-23 win7下與Virtualbox下的ubuntu11.04共享文件夾
- 2022-09-22 模擬實現(xiàn)vector
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支