package com.yeshi.ec.rebate.myapplication.ui.mine;
|
|
import android.app.Activity;
|
import android.content.Intent;
|
import android.graphics.Color;
|
import android.support.v7.widget.GridLayoutManager;
|
import android.support.v7.widget.RecyclerView;
|
import android.text.Spannable;
|
import android.text.SpannableString;
|
import android.text.Spanned;
|
import android.text.style.ForegroundColorSpan;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.bumptech.glide.Glide;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.wpc.library.util.common.StringUtils;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
|
import com.yeshi.ec.rebate.myapplication.R;
|
import com.yeshi.ec.rebate.myapplication.entity.InvitePlayer;
|
import com.yeshi.ec.rebate.myapplication.ui.dialog.MyTeamNotifyContentListDialog;
|
import com.yeshi.ec.rebate.myapplication.util.GlideCircleTransform;
|
import com.yeshi.ec.rebate.myapplication.util.umengCustomEvent.UserCustomEvent;
|
import com.yeshi.ec.rebate.myapplication.util.user.UserUtil;
|
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/12/5.
|
*/
|
|
public class MyPlayerListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private RecyclerView mRecyclerView;
|
|
private List<InvitePlayer> mList;
|
private Activity mContext;
|
private String type;
|
|
private View VIEW_FOOTER;
|
private View VIEW_HEADER;
|
|
//Type
|
private int TYPE_NORMAL = 1000;
|
private int TYPE_HEADER = 1001;
|
private int TYPE_FOOTER = 1002;
|
|
private DisplayImageOptions options;
|
|
private IDeleteListener deleteListener;
|
|
public MyPlayerListAdapter(Activity context, String type, List<InvitePlayer> list, IDeleteListener deleteListener) {
|
this.type = type;
|
this.mList = list;
|
this.mContext = context;
|
this.options = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_goods_default)
|
.showImageOnFail(R.drawable.ic_goods_default)
|
.showImageOnLoading(R.drawable.ic_goods_default)
|
.resetViewBeforeLoading(true).cacheInMemory(true)
|
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
|
.considerExifParams(true)
|
.displayer(new FadeInBitmapDisplayer(300)).build();
|
this.deleteListener = deleteListener;
|
}
|
|
@Override
|
public MyPlayerListAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
if (viewType == TYPE_FOOTER) {
|
return new MyHolder(VIEW_FOOTER);
|
} else if (viewType == TYPE_HEADER) {
|
return new MyHolder(VIEW_HEADER);
|
} else {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_myplayer, parent, false);
|
MyHolder holder = new MyHolder(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
|
final MyHolder viewHolder = (MyHolder) holder;
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
final InvitePlayer info;
|
if (haveHeaderView()) {
|
info = mList.get(position - 1);
|
if (position == 1) {
|
viewHolder.ll_item.setBackground(mContext.getResources().getDrawable(R.drawable.shape_capital_top));
|
} else if (position == mList.size()) {
|
viewHolder.ll_item.setBackground(mContext.getResources().getDrawable(R.drawable.shape_capital_bottom));
|
} else {
|
viewHolder.ll_item.setBackgroundColor(mContext.getResources().getColor(R.color.white));
|
}
|
if(mList.size()==1){
|
viewHolder.ll_item.setBackground(mContext.getResources().getDrawable(R.drawable.shape_capital));
|
}
|
|
} else if (haveFooterView() && ((haveHeaderView() && position == mList.size() + 1) ||
|
!haveHeaderView() && position == mList.size())) {
|
return;
|
} else {
|
info = mList.get(position);
|
}
|
|
Glide.with(mContext).load(info.getPortrait()).transform(new GlideCircleTransform(mContext)).into(viewHolder.iv_portrait);
|
if (StringUtils.isEmpty(info.getMemoName())) {
|
viewHolder.tv_name.setText(info.getNickName());
|
} else {
|
viewHolder.tv_name.setText(info.getMemoName());
|
}
|
viewHolder.tv_add_team_time.setText(info.getInviteTime());
|
String content = "";
|
for (int i = 0; i < info.getRecentMsg().size(); i++) {
|
content += info.getRecentMsg().get(i).getContent();
|
}
|
Spannable span = new SpannableString(content);
|
String temp = "";
|
for (int i = 0; i < info.getRecentMsg().size(); i++) {
|
span.setSpan(new ForegroundColorSpan(Color.parseColor(info.getRecentMsg().get(i).getColor()))
|
, temp.length(), (temp + info.getRecentMsg().get(i).getContent()).length(),
|
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
temp += info.getRecentMsg().get(i).getContent();
|
}
|
viewHolder.tv_recent_login_time.setText(span);
|
if (info.getState() == 2) {//已经脱离
|
viewHolder.tv_break_time.setCompoundDrawablePadding(DimenUtils.dip2px(mContext, 5));
|
viewHolder.tv_break_time.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_relative_unlink, 0, 0, 0);
|
viewHolder.tv_break_time.setText("已经脱离邀请关系");
|
viewHolder.tv_invite_status.setVisibility(View.GONE);
|
viewHolder.iv_delete.setVisibility(View.VISIBLE);
|
info.setVipBreakTime(null);
|
} else {
|
viewHolder.tv_break_time.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
viewHolder.tv_invite_status.setVisibility(View.VISIBLE);
|
viewHolder.iv_delete.setVisibility(View.GONE);
|
}
|
|
viewHolder.iv_delete.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (deleteListener != null)
|
deleteListener.delete(info, position - 1);
|
}
|
});
|
|
|
//设置脱离时间
|
if (info.getVipBreakTime() != null) {
|
viewHolder.tv_break_time.setVisibility(View.VISIBLE);
|
String breakContent = "";
|
for (int i = 0; i < info.getVipBreakTime().size(); i++) {
|
breakContent += info.getVipBreakTime().get(i).getContent();
|
}
|
Spannable spanBreak = new SpannableString(breakContent);
|
String tempBreak = "";
|
for (int i = 0; i < info.getVipBreakTime().size(); i++) {
|
spanBreak.setSpan(new ForegroundColorSpan(Color.parseColor(info.getVipBreakTime().get(i).getColor()))
|
, tempBreak.length(), (tempBreak + info.getVipBreakTime().get(i).getContent()).length(),
|
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
tempBreak += info.getVipBreakTime().get(i).getContent();
|
}
|
viewHolder.tv_break_time.setText(spanBreak);
|
viewHolder.tv_break_time.setCompoundDrawablePadding(DimenUtils.dip2px(mContext, 5));
|
viewHolder.tv_break_time.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_doubt_no_rebate, 0);
|
} else {
|
viewHolder.tv_break_time.setVisibility(View.GONE);
|
}
|
|
if (info.getState() == 2 || info.getVipBreakTime() != null) {
|
viewHolder.tv_break_time.setVisibility(View.VISIBLE);
|
} else {
|
viewHolder.tv_break_time.setVisibility(View.GONE);
|
}
|
|
viewHolder.tv_break_time.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (viewHolder.tv_break_time.getVisibility() == View.VISIBLE && info.getVipBreakTime() != null && info.getState() != 2)
|
new MyTeamNotifyContentListDialog.Builder(mContext).setTitle(StringUtils.isBlank(info.getMemoName()) ? info.getNickName() : info.getMemoName()).setMessage(info.getVipBreakTip()).create().show();
|
}
|
});
|
|
viewHolder.tv_invite_status.setText(info.getValidFans() ? "有效粉丝"
|
: "");
|
viewHolder.tv_invite_status.setTextColor(
|
mContext.getResources().getColor(R.color.playerlist_invite_success_text_color));
|
|
// if (type.equalsIgnoreCase("2")) {
|
// viewHolder.tv_invite_status.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
// } else {
|
viewHolder.tv_invite_status.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_player_input, 0);
|
// }
|
|
int levelIcon = UserUtil.getUserLevelIcon(info.getLevel());
|
//显示VIP信息
|
if (levelIcon != 0) {
|
viewHolder.iv_vip.setVisibility(View.VISIBLE);
|
viewHolder.iv_vip.setImageResource(levelIcon);
|
//设置weight
|
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
|
0,
|
LinearLayout.LayoutParams.WRAP_CONTENT,
|
1.0f
|
);
|
viewHolder.tv_name.setLayoutParams(param);
|
} else {
|
viewHolder.iv_vip.setVisibility(View.GONE);
|
//设置宽
|
ViewGroup.LayoutParams params = viewHolder.tv_name.getLayoutParams();
|
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
viewHolder.tv_name.setLayoutParams(params);
|
}
|
|
final InvitePlayer mInfo = info;
|
viewHolder.ll_item.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
if (type.equalsIgnoreCase("1") && viewHolder.tv_invite_status.getVisibility() == View.VISIBLE) {
|
UserCustomEvent.userTeamBeizhu(mContext);
|
Intent intent = new Intent(mContext, PlayerRemarkActivity.class);
|
intent.putExtra("inviteId", mInfo.getInviteId());
|
intent.putExtra("position", position - 1);
|
if (StringUtils.isEmpty(mInfo.getMemoName())) {
|
intent.putExtra("memoName", mInfo.getNickName());
|
} else {
|
intent.putExtra("memoName", mInfo.getMemoName());
|
}
|
intent.putExtra("state", mInfo.getState());
|
intent.putExtra("weiXin", mInfo.getWeiXin());
|
intent.putExtra("weiXinTip", mInfo.getWeiXinTip());
|
intent.putExtra("weiXinState", mInfo.getWeiXinState());
|
intent.putExtra("workerId", mInfo.getWorkerId());
|
intent.putExtra("direct", true);
|
intent.putExtra("name", true);
|
|
if (StringUtils.isEmpty(info.getMemoName())) {
|
intent.putExtra("name", info.getNickName());
|
} else {
|
intent.putExtra("name", info.getMemoName());
|
}
|
|
mContext.startActivityForResult(intent, 111);
|
} else if (type.equalsIgnoreCase("2") && viewHolder.tv_invite_status.getVisibility() == View.VISIBLE) {
|
Intent intent = new Intent(mContext, PlayerRemarkActivity.class);
|
intent.putExtra("inviteId", mInfo.getInviteId());
|
intent.putExtra("position", position - 1);
|
if (StringUtils.isEmpty(mInfo.getMemoName())) {
|
intent.putExtra("memoName", mInfo.getNickName());
|
} else {
|
intent.putExtra("memoName", mInfo.getMemoName());
|
}
|
intent.putExtra("state", mInfo.getState());
|
intent.putExtra("weiXin", mInfo.getWeiXin());
|
intent.putExtra("weiXinTip", mInfo.getWeiXinTip());
|
intent.putExtra("weiXinState", mInfo.getWeiXinState());
|
intent.putExtra("workerId", mInfo.getWorkerId());
|
intent.putExtra("direct", false);
|
if (StringUtils.isEmpty(info.getMemoName())) {
|
intent.putExtra("name", info.getNickName());
|
} else {
|
intent.putExtra("name", info.getMemoName());
|
}
|
mContext.startActivityForResult(intent, 111);
|
}
|
}
|
});
|
}
|
}
|
|
public void setType(String type) {
|
this.type = type;
|
}
|
|
@Override
|
public int getItemCount() {
|
int count = (mList == null ? 0 : mList.size());
|
if (VIEW_FOOTER != null) {
|
count++;
|
}
|
|
if (VIEW_HEADER != null) {
|
count++;
|
}
|
return count;
|
}
|
|
@Override
|
public int getItemViewType(int position) {
|
if (isHeaderView(position)) {
|
return TYPE_HEADER;
|
} else if (isFooterView(position)) {
|
return TYPE_FOOTER;
|
} else {
|
return TYPE_NORMAL;
|
}
|
}
|
|
@Override
|
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
|
try {
|
if (mRecyclerView == null && mRecyclerView != recyclerView) {
|
mRecyclerView = recyclerView;
|
}
|
ifGridLayoutManager();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private View getLayout(int layoutId) {
|
return LayoutInflater.from(mContext).inflate(layoutId, null);
|
}
|
|
public void addHeaderView(View headerView) {
|
if (haveHeaderView()) {
|
throw new IllegalStateException("hearview has already exists!");
|
} else {
|
//避免出现宽度自适应
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
headerView.setLayoutParams(params);
|
VIEW_HEADER = headerView;
|
ifGridLayoutManager();
|
notifyItemInserted(0);
|
}
|
|
}
|
|
public void addFooterView(View footerView) {
|
if (haveFooterView()) {
|
throw new IllegalStateException("footerView has already exists!");
|
} else {
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
footerView.setLayoutParams(params);
|
VIEW_FOOTER = footerView;
|
ifGridLayoutManager();
|
notifyItemInserted(getItemCount() - 1);
|
}
|
}
|
|
private void ifGridLayoutManager() {
|
if (mRecyclerView == null) return;
|
final RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();
|
if (layoutManager instanceof GridLayoutManager) {
|
((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
@Override
|
public int getSpanSize(int position) {
|
if (isHeaderView(position) || isFooterView(position)) {
|
return ((GridLayoutManager) layoutManager).getSpanCount();
|
} else {
|
return 1;
|
}
|
}
|
});
|
}
|
}
|
|
private boolean haveHeaderView() {
|
return VIEW_HEADER != null;
|
}
|
|
public boolean haveFooterView() {
|
return VIEW_FOOTER != null;
|
}
|
|
private boolean isHeaderView(int position) {
|
return haveHeaderView() && position == 0;
|
}
|
|
private boolean isFooterView(int position) {
|
return haveFooterView() && position >= getItemCount() - 1;
|
}
|
|
|
public class MyHolder extends RecyclerView.ViewHolder {
|
LinearLayout ll_item;
|
ImageView iv_portrait;
|
TextView tv_name;
|
TextView tv_add_team_time;
|
TextView tv_recent_login_time;
|
TextView tv_invite_status;
|
ImageView iv_vip;
|
TextView tv_break_time;
|
ImageView iv_delete;
|
|
public MyHolder(View convertView) {
|
super(convertView);
|
ll_item = convertView.findViewById(R.id.ll_item);
|
iv_portrait = convertView.findViewById(R.id.iv_portrait);
|
tv_name = convertView
|
.findViewById(R.id.tv_name);
|
tv_add_team_time = convertView
|
.findViewById(R.id.tv_add_team_time);
|
tv_recent_login_time = convertView.findViewById(R.id.tv_recent_login_time);
|
tv_invite_status = convertView.findViewById(R.id.tv_invite_status);
|
iv_vip = convertView.findViewById(R.id.iv_vip);
|
tv_break_time = convertView.findViewById(R.id.tv_break_time);
|
iv_delete = convertView.findViewById(R.id.iv_delete);
|
}
|
}
|
|
|
interface IDeleteListener {
|
|
public void delete(InvitePlayer invitePlayer, int position);
|
}
|
}
|