Files
assistant-android/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.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;
}
}
}