1:修改测试出来的bug,关于:身价、我的家族、歌手认证、挚友、房间心跳、
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user