1:修改测试出来的bug,关于:身价、我的家族、歌手认证、挚友、房间心跳、

This commit is contained in:
2025-12-02 19:26:37 +08:00
parent 8ce028379c
commit d94d7a75df
24 changed files with 239 additions and 77 deletions

View File

@@ -205,8 +205,9 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
break;
case 2:
AdaptiveImageView emojiImageView = helper.getView(com.xscm.moduleutil.R.id.im_emj);
emojiImageView.setTag("");
// 清除之前的图片加载任务,防止图片显示在错误的位置
Glide.with(mContext).clear(emojiImageView);
emojiImageView.setTag(null);
emojiImageView.setVisibility(View.VISIBLE);
helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.GONE);
@@ -214,6 +215,9 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
avatar.setData(emMessage.getText().getFromUserInfo().getAvatar(), "", emMessage.getText().getFromUserInfo().getNobility_image());
// ImageUtils.loadHeadCC(emMessage.getText().getFromUserInfo().getAvatar(), helper.getView(com.xscm.moduleutil.R.id.avatar));
ShineTextView tvName = helper.getView(com.xscm.moduleutil.R.id.tv_name);
// 先重置tvName状态防止复用时出现混乱
tvName.setShine(false);
tvName.clearAnimation();
tvName.setText(emMessage.getText().getFromUserInfo().getNickname());
if (!emMessage.getText().getFromUserInfo().getNickname_color().isEmpty()) {
@@ -222,6 +226,12 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
tvName.setEndColor(Color.parseColor(emMessage.getText().getFromUserInfo().getNickname_color()));
tvName.setShine(true);
tvName.setShineType(0);
}else {
tvName.setStartColor(Color.parseColor("#FFFFFFFF"));
tvName.setShineColor(Color.parseColor("#FFFFFFFF"));
tvName.setEndColor(Color.parseColor("#FFFFFFFF"));
tvName.setShine(true);
tvName.setShineType(1);
}
// helper.setTextColor(com.xscm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname_color() != null && !emMessage.getText().getFromUserInfo().getNickname_color().isEmpty() ? Color.parseColor(emMessage.getText().getFromUserInfo().getNickname_color()) : Color.parseColor("#CCA882"));
@@ -249,6 +259,11 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
}
}
// 为聊天气泡设置唯一标识,防止异步加载后应用到错误的视图
String bubbleId = emMessage.getRoomId() + "_" + helper.getLayoutPosition() + "_bubble";
View bubbleView = helper.getView(com.xscm.moduleutil.R.id.bubble);
bubbleView.setTag(bubbleId);
if (emMessage.getText().getFromUserInfo().getChat_bubble() != null && !emMessage.getText().getFromUserInfo().getChat_bubble().isEmpty()) {
// 使用 Glide 加载图片并设置名称
String imageUrl = emMessage.getText().getFromUserInfo().getChat_bubble();
@@ -257,30 +272,39 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
// 将资源转换为 Bitmap
if (resource instanceof BitmapDrawable) {
Bitmap bitmap = ((BitmapDrawable) resource).getBitmap();
// 创建新的文件名
Drawable fakeNinePatch = new FakeNinePatchDrawable(bitmap, 0.4f, 0.4f, 0.6f, 0.5f);
// 检查视图是否仍属于当前数据项
if (bubbleId.equals(bubbleView.getTag())) {
// 将资源转换为 Bitmap
if (resource instanceof BitmapDrawable) {
Bitmap bitmap = ((BitmapDrawable) resource).getBitmap();
// 创建新的文件名
Drawable fakeNinePatch = new FakeNinePatchDrawable(bitmap, 0.4f, 0.4f, 0.6f, 0.5f);
// 保存图片到本地
helper.getView(com.xscm.moduleutil.R.id.bubble).setBackground(fakeNinePatch);
// 设置背景
bubbleView.setBackground(fakeNinePatch);
}
}
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
// 加载失败处理
// 检查视图是否仍属于当前数据项
if (bubbleId.equals(bubbleView.getTag())) {
// 加载失败时使用默认背景
bubbleView.setBackgroundResource(com.xscm.moduleutil.R.drawable.ease_row_pubilc_user_bg);
}
}
});
} else {
helper.getView(com.xscm.moduleutil.R.id.bubble).setBackgroundResource(com.xscm.moduleutil.R.drawable.ease_row_pubilc_user_bg);
// 检查视图是否仍属于当前数据项
if (bubbleId.equals(bubbleView.getTag())) {
bubbleView.setBackgroundResource(com.xscm.moduleutil.R.drawable.ease_row_pubilc_user_bg);
}
}
if (emMessage.getText().getEmoji() != null && emMessage.getText().getEmoji().getAnimate_image() != null) {
// 为每个加载任务设置唯一标识
String uniqueId = emMessage.getRoomId() + "_" + helper.getLayoutPosition();
String uniqueId = emMessage.getRoomId() + "_" + helper.getLayoutPosition() + "_emoji";
emojiImageView.setTag(uniqueId);
//这段代码使用 Optional 链式调用安全地获取 emMessage 中的 animate_image 字段,避免空指针异常。如果任意环节为 null则返回空字符串。
@@ -324,19 +348,31 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target,
boolean isFirstResource) {
// 加载失败时检查视图是否仍属于当前数据项
if (uniqueId.equals(emojiImageView.getTag())) {
// 加载静态表情作为备选
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getImage())
.into(emojiImageView);
}
return false;
}
})
.into(emojiImageView);
} else {
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getImage())
.into(emojiImageView);
// 检查视图是否仍属于当前数据项
if (uniqueId.equals(emojiImageView.getTag())) {
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getImage())
.into(emojiImageView);
}
}
} else {
// 确保在非表情情况下,重置视图状态
helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.VISIBLE);
emojiImageView.setVisibility(View.GONE);
// 清除可能存在的异步加载任务
Glide.with(mContext).clear(emojiImageView);
}
break;
case 3:
@@ -412,6 +448,13 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
ivCharm.setImageDrawable(null);
Glide.with(ivCharm.getContext()).clear(ivCharm);
}
// 重置tvName的闪动状态防止复用时出现混乱
ShineTextView tvName = holder.getView(com.xscm.moduleutil.R.id.tv_name);
if (tvName != null) {
tvName.setShine(false);
tvName.clearAnimation();
}
} catch (Exception e) {
e.printStackTrace();
}