348 lines
15 KiB
Java
348 lines
15 KiB
Java
package com.gh.gamecenter.message;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.text.Html;
|
|
import android.text.TextUtils;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
import com.facebook.drawee.generic.GenericDraweeHierarchy;
|
|
import com.facebook.drawee.generic.RoundingParams;
|
|
import com.facebook.drawee.view.SimpleDraweeView;
|
|
import com.gh.base.OnListClickListener;
|
|
import com.gh.common.constant.ItemViewType;
|
|
import com.gh.common.im.ImManager;
|
|
import com.gh.common.util.CommentUtils;
|
|
import com.gh.common.util.DialogHelper;
|
|
import com.gh.common.util.DialogUtils;
|
|
import com.gh.common.util.DirectUtils;
|
|
import com.gh.common.util.DisplayUtils;
|
|
import com.gh.common.util.EntranceUtils;
|
|
import com.gh.common.util.ImageUtils;
|
|
import com.gh.common.util.MtaHelper;
|
|
import com.gh.gamecenter.GameDetailActivity;
|
|
import com.gh.gamecenter.NewsDetailActivity;
|
|
import com.gh.gamecenter.R;
|
|
import com.gh.gamecenter.ViewImageActivity;
|
|
import com.gh.gamecenter.WebActivity;
|
|
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
|
|
import com.gh.gamecenter.baselist.ListAdapter;
|
|
import com.gh.gamecenter.entity.MessageKeFuEntity;
|
|
import com.gh.gamecenter.entity.MessageLinkEntity;
|
|
import com.gh.gamecenter.manager.UserManager;
|
|
import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity;
|
|
import com.gh.gamecenter.subject.SubjectActivity;
|
|
import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel;
|
|
import com.google.android.flexbox.FlexboxLayout;
|
|
import com.lightgame.utils.Util_System_ClipboardManager;
|
|
import com.lightgame.utils.Utils;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Created by khy on 2017/4/10.
|
|
* 消息-客服适配器
|
|
*/
|
|
public class KeFuFragmentAdapter extends ListAdapter<MessageKeFuEntity> {
|
|
|
|
private OnListClickListener mClickListener;
|
|
|
|
private KeFuViewModel mListViewModel;
|
|
|
|
private String mEntrance;
|
|
|
|
private int mImageSize;
|
|
|
|
public KeFuFragmentAdapter(Context context, OnListClickListener listener, KeFuViewModel listViewModel, String entrance) {
|
|
super(context);
|
|
mListViewModel = listViewModel;
|
|
mClickListener = listener;
|
|
mEntrance = entrance;
|
|
|
|
mImageSize = (mContext.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(36)) / 3;
|
|
}
|
|
|
|
@Override
|
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
|
if (viewType == ItemViewType.ITEM_FOOTER) {
|
|
View view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false);
|
|
return new FooterViewHolder(view);
|
|
} else {
|
|
View view = mLayoutInflater.inflate(R.layout.message_kefu_item, parent, false);
|
|
return new KeFuViewHolder(view, mClickListener);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
|
if (holder instanceof KeFuViewHolder) {
|
|
MessageKeFuEntity keFuEntity = mEntityList.get(position);
|
|
KeFuViewHolder viewHolder = (KeFuViewHolder) holder;
|
|
initKeFuViewHolder(viewHolder, keFuEntity);
|
|
} else if (holder instanceof FooterViewHolder) {
|
|
((FooterViewHolder) holder).initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver, R.string.ask_loadover_hint);
|
|
((FooterViewHolder) holder).initItemPadding();
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public int getItemViewType(int position) {
|
|
if (position == getItemCount() - 1) {
|
|
return ItemViewType.ITEM_FOOTER;
|
|
} else {
|
|
return ItemViewType.ITEM_BODY;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getItemCount() {
|
|
return mEntityList == null || mEntityList.isEmpty() ? 0 : mEntityList.size() + FOOTER_ITEM_COUNT;
|
|
}
|
|
|
|
private void initKeFuViewHolder(KeFuViewHolder viewHolder, final MessageKeFuEntity keFuEntity) {
|
|
|
|
List<String> images = keFuEntity.getImages();
|
|
if (images != null && !images.isEmpty()) {
|
|
viewHolder.imagesContainer.removeAllViews();
|
|
viewHolder.imagesContainer.setVisibility(View.VISIBLE);
|
|
for (int i = 0; i < images.size(); i++) {
|
|
String image = images.get(i);
|
|
SimpleDraweeView draweeView = new SimpleDraweeView(mContext);
|
|
int padding = DisplayUtils.dip2px(2);
|
|
draweeView.setPadding(padding, padding, padding, padding);
|
|
FlexboxLayout.LayoutParams params = new FlexboxLayout.LayoutParams(mImageSize, mImageSize);
|
|
draweeView.setLayoutParams(params);
|
|
draweeView.setImageURI(image);
|
|
int finalI = i;
|
|
draweeView.setOnClickListener(v -> {
|
|
Intent intent = ViewImageActivity.getViewImageIntent(mContext,
|
|
(ArrayList<String>) images,
|
|
finalI,
|
|
"(消息中心-系统)");
|
|
mContext.startActivity(intent);
|
|
MtaHelper.onEvent("消息中心", "系统_二级列表", "点击图片");
|
|
});
|
|
|
|
GenericDraweeHierarchy hierarchy = draweeView.getHierarchy();
|
|
RoundingParams roundingParams = RoundingParams.fromCornersRadius(18f);
|
|
hierarchy.setRoundingParams(roundingParams);
|
|
hierarchy.setPlaceholderImage(R.drawable.occupy);
|
|
viewHolder.imagesContainer.addView(draweeView);
|
|
}
|
|
viewHolder.imagesContainer.requestLayout();
|
|
} else {
|
|
viewHolder.imagesContainer.setVisibility(View.GONE);
|
|
}
|
|
|
|
viewHolder.content.setText(Html.fromHtml(keFuEntity.getMessage()));
|
|
|
|
viewHolder.content.setOnSpannableClickListener(spannableText -> {
|
|
Util_System_ClipboardManager.setText(mContext, spannableText);
|
|
Utils.toast(mContext, "已复制:" + spannableText);
|
|
});
|
|
|
|
viewHolder.setClickData(keFuEntity);
|
|
if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) {
|
|
viewHolder.suggestion.setVisibility(View.VISIBLE);
|
|
viewHolder.suggestion.setText(keFuEntity.getSuggestion());
|
|
} else {
|
|
viewHolder.suggestion.setVisibility(View.GONE);
|
|
}
|
|
|
|
List<MessageLinkEntity> links = keFuEntity.getLinks();
|
|
if (links != null && !links.isEmpty()) {
|
|
viewHolder.skipList.setVisibility(View.VISIBLE);
|
|
viewHolder.skipList.removeAllViews();
|
|
for (MessageLinkEntity link : links) {
|
|
if (TextUtils.isEmpty(link.getQq()) &&
|
|
TextUtils.isEmpty(link.getId()) &&
|
|
TextUtils.isEmpty(link.getUrl()) &&
|
|
!"7moor".equals(link.getType()) &&
|
|
!"个人主页".equals(link.getType())) continue;
|
|
TextView textView = new TextView(mContext);
|
|
textView.setTextColor(mContext.getResources().getColor(R.color.theme_font));
|
|
textView.setTextSize(12F);
|
|
textView.setText(link.getDocument());
|
|
textView.setOnClickListener(v -> {
|
|
if (!keFuEntity.isRead()) {
|
|
mListViewModel.postMessageRead(keFuEntity.getId());
|
|
notifyDataSetChanged();
|
|
}
|
|
linkSkip(link);
|
|
});
|
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT
|
|
, ViewGroup.LayoutParams.WRAP_CONTENT);
|
|
params.setMargins(0, DisplayUtils.dip2px(8F), 0, 0);
|
|
viewHolder.skipList.addView(textView, params);
|
|
}
|
|
|
|
} else {
|
|
viewHolder.skipList.setVisibility(View.GONE);
|
|
}
|
|
|
|
MessageKeFuEntity.ServiceEntity serviceEntity = keFuEntity.getServiceEntity();
|
|
viewHolder.kefuName.setText(R.string.kefu_default_name);
|
|
if (serviceEntity != null) {
|
|
String name = serviceEntity.getName();
|
|
if (!TextUtils.isEmpty(name)) {
|
|
viewHolder.kefuName.setText(name);
|
|
}
|
|
ImageUtils.displayIcon(viewHolder.kefuIcon, serviceEntity.getIcon());
|
|
} else {
|
|
ImageUtils.display(viewHolder.kefuIcon, R.drawable.message_kefu_icon);
|
|
}
|
|
|
|
if (keFuEntity.getServiceEntity() != null && keFuEntity.getServiceEntity().getAuth() != null) {
|
|
ImageUtils.display(viewHolder.badgeIcon, keFuEntity.getServiceEntity().getAuth().getIcon());
|
|
} else {
|
|
ImageUtils.display(viewHolder.badgeIcon, "");
|
|
}
|
|
|
|
CommentUtils.setCommentTime(viewHolder.time, keFuEntity.getTime());
|
|
|
|
if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) {
|
|
StringBuffer suggest = new StringBuffer();
|
|
suggest.append("反馈原文:");
|
|
suggest.append(keFuEntity.getSuggestion());
|
|
viewHolder.suggestion.setVisibility(View.VISIBLE);
|
|
viewHolder.suggestion.setText(suggest);
|
|
} else {
|
|
viewHolder.suggestion.setVisibility(View.GONE);
|
|
}
|
|
|
|
if (keFuEntity.isRead()) {
|
|
viewHolder.unread.setVisibility(View.GONE);
|
|
} else {
|
|
viewHolder.unread.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
viewHolder.kefuIcon.setOnClickListener(v -> {
|
|
if (serviceEntity != null) {
|
|
MtaHelper.onEvent("消息中心", "系统_二级列表", "点击头像");
|
|
DirectUtils.directToHomeActivity(mContext, serviceEntity.getId(), mEntrance, "消息中心-系统");
|
|
}
|
|
});
|
|
viewHolder.kefuName.setOnClickListener(v -> {
|
|
if (serviceEntity != null) {
|
|
MtaHelper.onEvent("消息中心", "系统_二级列表", "点击名字");
|
|
DirectUtils.directToHomeActivity(mContext, serviceEntity.getId(), mEntrance, "消息中心-系统");
|
|
}
|
|
});
|
|
|
|
viewHolder.itemView.setOnLongClickListener(v -> {
|
|
DialogHelper.showDialog(mContext,
|
|
"删除消息",
|
|
"消息删除将不可恢复,确定删除吗?",
|
|
"确定", "取消", () -> {
|
|
mListViewModel.deleteMessage(keFuEntity.getId());
|
|
}, () -> {
|
|
},
|
|
true, "消息中心", "系统列表-删除");
|
|
return false;
|
|
});
|
|
}
|
|
|
|
private void linkSkip(MessageLinkEntity data) {
|
|
String type = data.getType();
|
|
if (TextUtils.isEmpty(type)) {
|
|
Utils.toast(mContext, "数据请求失败");
|
|
return;
|
|
}
|
|
MtaHelper.onEvent("消息中心", "系统_二级列表", "点击链接");
|
|
|
|
|
|
switch (type) {
|
|
case "游戏":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
GameDetailActivity.startGameDetailActivity(mContext, data.getId(), "");
|
|
}
|
|
break;
|
|
case "QQ号":
|
|
if (!TextUtils.isEmpty(data.getQq())) {
|
|
DirectUtils.directToQqConversation(mContext, data.getQq());
|
|
}
|
|
break;
|
|
case "web":
|
|
if (!TextUtils.isEmpty(data.getUrl())) {
|
|
mContext.startActivity(WebActivity.getIntentByUrl(mContext, data.getUrl()));
|
|
}
|
|
break;
|
|
case "QQ群":
|
|
if (!TextUtils.isEmpty(data.getKey())) {
|
|
DirectUtils.directToQqGroup(mContext, data.getKey());
|
|
}
|
|
break;
|
|
case "新闻":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
Intent intent2 = new Intent(mContext, NewsDetailActivity.class);
|
|
intent2.putExtra(EntranceUtils.KEY_ENTRANCE, "(消息-公告)");
|
|
intent2.putExtra(EntranceUtils.KEY_NEWSID, data.getId());
|
|
mContext.startActivity(intent2);
|
|
}
|
|
break;
|
|
case "专题":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
SubjectActivity.startSubjectActivity(mContext, data.getId()
|
|
, null, false, "(消息-客服)");
|
|
}
|
|
break;
|
|
case "7moor":
|
|
if (mContext instanceof Activity) {
|
|
ImManager.startChatActivity((Activity) mContext, null, null);
|
|
}
|
|
break;
|
|
case "问题":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, data.getId(), mEntrance, "(消息-客服)"));
|
|
}
|
|
break;
|
|
case "回答":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
DirectUtils.directToAnswerDetail(mContext, data.getId(), mEntrance, "(消息-客服)");
|
|
}
|
|
break;
|
|
case "社区文章":
|
|
if (!TextUtils.isEmpty(data.getId()) && data.getCommunity() != null) {
|
|
DirectUtils.directToCommunityArticle(mContext, data.getId(), data.getCommunity().getId(), mEntrance, "(消息-客服)");
|
|
}
|
|
break;
|
|
case "社区专题":
|
|
if (!TextUtils.isEmpty(data.getId()) && data.getCommunity() != null) {
|
|
DirectUtils.directToCommunityColumn(mContext, data.getCommunity(), data.getId(), mEntrance, "(消息-客服)");
|
|
}
|
|
break;
|
|
case "视频":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
DirectUtils.directToVideoDetail(mContext, data.getId(), VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), false, "", mEntrance, "系统_二级列表", "");
|
|
}
|
|
break;
|
|
case "安利墙评论":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
MtaHelper.onEvent("安利墙", "进入", "消息中心");
|
|
DirectUtils.directToAmway(mContext, data.getId(), mEntrance, "(消息-客服)");
|
|
}
|
|
break;
|
|
case "个人主页":
|
|
DirectUtils.directToHomeActivity(mContext, UserManager.getInstance().getUserId(), mEntrance, "(消息-客服)");
|
|
break;
|
|
case "游戏详情评论":
|
|
if (!TextUtils.isEmpty(data.getId())) {
|
|
GameDetailActivity.startGameDetailCommentActivity(mContext, data.getId(), "");
|
|
}
|
|
break;
|
|
default:
|
|
DialogUtils.showLowVersionDialog(mContext);
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|