package com.tejia.lijin.app.ui.mine;
|
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.graphics.Color;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.bumptech.glide.Glide;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.entity.WelfareTicket;
|
import com.tejia.lijin.app.ui.dialog.AddZFBInfoDialog;
|
import com.tejia.lijin.app.ui.invite.ShareBrowserActivity;
|
import com.tejia.lijin.app.util.JumpActivityUtil;
|
import com.tejia.lijin.app.util.MultipleContentPopUps;
|
import com.tejia.lijin.app.util.clipboard.ClipboardUtil;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/12/5.
|
* 福利中心适配器
|
*/
|
|
public class WelfareCenterAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private RecyclerView mRecyclerView;
|
|
private List<WelfareTicket> mList;
|
private Context mContext;
|
|
private View VIEW_FOOTER;
|
private View VIEW_HEADER;
|
|
//Type
|
private int TYPE_NORMAL = 1000;
|
private int TYPE_HEADER = 1001;
|
public int TYPE_FOOTER = 1002;
|
|
private DisplayImageOptions options;
|
|
public WelfareCenterAdapter(Context context, List<WelfareTicket> list) {
|
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();
|
}
|
|
|
@Override
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
if (viewType == TYPE_FOOTER) {
|
return new ViewHolder(VIEW_FOOTER);
|
} else if (viewType == TYPE_HEADER) {
|
return new ViewHolder(VIEW_HEADER);
|
} else {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_welfare_center, parent, false);
|
ViewHolder holder = new ViewHolder(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
final WelfareTicket info;
|
if (haveHeaderView()) {
|
info = mList.get(position - 1);
|
} else if (haveFooterView() && ((haveHeaderView() && position == mList.size() + 1) ||
|
!haveHeaderView() && position == mList.size())) {
|
return;
|
} else {
|
info = mList.get(position);
|
}
|
final ViewHolder viewHolder = (ViewHolder) holder;
|
|
Glide.with(mContext).load(info.getCouponPicture()).into(viewHolder.iv_hint_img);
|
|
viewHolder.tv_ticket_surplus_date.setVisibility(info.getRemainDays() == null
|
? View.INVISIBLE : View.VISIBLE);
|
viewHolder.ll_coupon_use_or_send.setVisibility(View.GONE);
|
if (info.getState() <= 2 || (info.getState() >= 10 && info.getState() < 13)) {//券使用状态:未使用1、使用中2、已使用3、已过期4
|
viewHolder.iv_ticket_state.setVisibility(View.INVISIBLE);
|
viewHolder.tv_use_or_activition.setVisibility(View.VISIBLE);
|
viewHolder.tv_ticket_type.setTextColor(mContext.getResources().getColor(R.color.gray2));
|
viewHolder.tv_ticket_name.setTextColor(mContext.getResources().getColor(R.color.black));
|
viewHolder.tv_ticket_term_of_validity.setTextColor(mContext.getResources().getColor(R.color.gray));
|
viewHolder.tv_ticket_limit.setTextColor(mContext.getResources().getColor(R.color.gray));
|
viewHolder.tv_ticket_from.setTextColor(mContext.getResources().getColor(R.color.gray));
|
viewHolder.tv_ticket_rule.setTextColor(mContext.getResources().getColor(R.color.gray));
|
if (info.getState() == 2) {
|
viewHolder.tv_use_or_activition.setText("使用中");
|
viewHolder.tv_use_or_activition.setCompoundDrawablesRelativeWithIntrinsicBounds(0,
|
0, R.drawable.ic_profit_doubt, 0);
|
viewHolder.tv_use_or_activition.setCompoundDrawablePadding(DimenUtils.dip2px(mContext, 5));
|
viewHolder.tv_use_or_activition.setTextColor(mContext.getResources().getColor(R.color.main_text_color));
|
viewHolder.tv_use_or_activition.setBackgroundColor(mContext.getResources().getColor(R.color.white));
|
} else if (info.getState() == 0) {
|
viewHolder.tv_use_or_activition.setText("立即激活");
|
viewHolder.tv_use_or_activition.setTextColor(mContext.getResources().getColor(R.color.white));
|
} else if (info.getState() == 10) {
|
viewHolder.tv_use_or_activition.setVisibility(View.GONE);
|
viewHolder.ll_coupon_use_or_send.setVisibility(View.VISIBLE);
|
viewHolder.iv_coupon_use.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
viewClick1(info);
|
}
|
});
|
viewHolder.iv_coupon_send.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
sendCoupon(info.getId(), position);
|
}
|
});
|
} else if (info.getState() == 11) {
|
viewHolder.tv_use_or_activition.setText("赠送");
|
viewHolder.tv_use_or_activition.setTextColor(mContext.getResources().getColor(R.color.white));
|
} else if (info.getState() == 12) {
|
viewHolder.tv_use_or_activition.setText("分享口令");
|
viewHolder.tv_use_or_activition.setTextColor(mContext.getResources().getColor(R.color.white));
|
} else {
|
viewHolder.tv_use_or_activition.setText("立即使用");
|
viewHolder.tv_use_or_activition.setTextColor(mContext.getResources().getColor(R.color.white));
|
}
|
} else {
|
viewHolder.tv_use_or_activition.setVisibility(View.GONE);
|
viewHolder.iv_ticket_state.setVisibility(View.VISIBLE);
|
viewHolder.tv_ticket_type.setTextColor(mContext.getResources().getColor(R.color.gray9));
|
viewHolder.tv_ticket_name.setTextColor(mContext.getResources().getColor(R.color.gray9));
|
viewHolder.tv_ticket_term_of_validity.setTextColor(mContext.getResources().getColor(R.color.gray9));
|
viewHolder.tv_ticket_limit.setTextColor(mContext.getResources().getColor(R.color.gray9));
|
viewHolder.tv_ticket_from.setTextColor(mContext.getResources().getColor(R.color.gray9));
|
viewHolder.tv_ticket_rule.setTextColor(mContext.getResources().getColor(R.color.gray9));
|
}
|
|
viewHolder.tv_ticket_type.setText(info.getCouponEffect());
|
viewHolder.tv_ticket_name.setText(info.getCouponName());
|
viewHolder.tv_ticket_term_of_validity.setText(info.getCouponTerm());
|
viewHolder.tv_ticket_limit.setText(info.getCouponRule());
|
// viewHolder.tv_ticket_limit.setText("sajflasdjaslkdjskl\nasdjasldjsaio");
|
viewHolder.tv_ticket_from.setText(info.getSource());
|
|
if (info.getRemainDays() != null) {
|
viewHolder.tv_ticket_surplus_date.setText(info.getRemainDays().getContent());
|
viewHolder.tv_ticket_surplus_date.setTextColor(Color.parseColor(info.getRemainDays().getFontColor()));
|
}
|
|
if (info.getState() == 4) {
|
Glide.with(mContext).load(R.drawable.ic_ticket_haved_overdue).into(viewHolder.iv_ticket_state);
|
} else if (info.getState() == 3) {
|
Glide.with(mContext).load(R.drawable.ic_ticket_haved_used).into(viewHolder.iv_ticket_state);
|
} else if (info.getState() == 13) {
|
Glide.with(mContext).load(R.drawable.ic_ticket_haved_give).into(viewHolder.iv_ticket_state);
|
}
|
|
viewHolder.tv_ticket_rule.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (viewHolder.fl_bottom_rule.getVisibility() == View.VISIBLE) {
|
viewHolder.tv_ticket_rule.setCompoundDrawablesWithIntrinsicBounds(
|
0, 0, R.drawable.ic_arrow_down, 0);
|
viewHolder.fl_bottom_rule.setVisibility(View.GONE);
|
viewHolder.ll_top_content.setBackground(mContext.getResources().getDrawable(R.drawable.shape_hot_search));
|
} else if (viewHolder.fl_bottom_rule.getVisibility() == View.GONE) {
|
viewHolder.tv_ticket_rule.setCompoundDrawablesWithIntrinsicBounds(
|
0, 0, R.drawable.ic_arrow_up, 0);
|
viewHolder.fl_bottom_rule.setVisibility(View.VISIBLE);
|
viewHolder.ll_top_content.setBackground(mContext.getResources().getDrawable(R.drawable.shape_capital_top));
|
}
|
}
|
});
|
|
viewHolder.iv_welfare_doublt.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
Intent intent = new Intent(mContext, ShareBrowserActivity.class);
|
intent.putExtra("url", info.getCouponRuleLink());
|
mContext.startActivity(intent);
|
}
|
});
|
|
viewHolder.tv_use_or_activition.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (info.getState() == 11) {
|
sendCoupon(info.getId(), position);
|
} else if (info.getState() == 12) {
|
showKouling(info);
|
} else {
|
viewClick1(info);
|
}
|
}
|
});
|
}
|
}
|
|
|
/**
|
* 赠送券
|
*/
|
private void sendCoupon(String id, final int position) {
|
SharedPreferences sp = mContext.getSharedPreferences("user", Context.MODE_PRIVATE);
|
String uid = sp.getString("uid", "");
|
ShoppingApi.sendCoupon(mContext, uid, id, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optInt("code") == 0) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
WelfareTicket info = gson.fromJson(jsonObject.optJSONObject("data")
|
.optJSONObject("result").toString(),
|
new TypeToken<WelfareTicket>() {
|
}.getType());
|
mList.remove(position - 1);
|
mList.add(position - 1, info);
|
notifyItemChanged(position);
|
showKouling(info);
|
} else {
|
Toast.makeText(mContext, jsonObject.optString("msg"),
|
Toast.LENGTH_LONG).show();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
|
super.onFailure(statusCode, headers, jsonObject, e);
|
Toast.makeText(mContext, "请求失败", Toast.LENGTH_LONG).show();
|
}
|
});
|
}
|
|
private void showKouling(final WelfareTicket info) {
|
AddZFBInfoDialog.Builder builder = new AddZFBInfoDialog.Builder(mContext);
|
builder.setTitle("复制赠送口令")
|
.setMessage(info.getGiveTips())
|
.setPositiveButton("复制", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
ClipboardUtil.copy(mContext,info.getGiveTips());
|
|
dialog.dismiss();
|
Toast.makeText(mContext, "分享口令,已复制成功", Toast.LENGTH_LONG).show();
|
}
|
}).create().show();
|
}
|
|
/**
|
* 点击非网络事件处理
|
*
|
* @param info
|
*/
|
private void viewClick1(WelfareTicket info) {
|
if (info.getState() == 0) {
|
MultipleContentPopUps dialog = new MultipleContentPopUps(mContext);
|
dialog.onShowDialog("激活提示", info.getTips(), "知道了", null, null, null, null);
|
} else if (info.getState() == 2) {
|
MultipleContentPopUps popUps = new MultipleContentPopUps(mContext);
|
popUps.onShowDialog("使用中?", info.getTipsUsing(), "知道了", null, null, null, null);
|
} else {
|
JumpActivityUtil.jumpActivity(mContext, info.getJumpBtn().getJumpDetail(),
|
info.getJumpBtn().getParams());
|
}
|
}
|
|
@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;
|
}
|
|
|
class ViewHolder extends RecyclerView.ViewHolder {
|
TextView tv_ticket_type;
|
TextView tv_ticket_name;
|
TextView tv_ticket_surplus_date;
|
TextView tv_ticket_from;
|
FrameLayout fl_bottom_rule;
|
LinearLayout ll_top_content;
|
LinearLayout ll_free_single_ticket;
|
TextView tv_ticket_rule;
|
TextView tv_ticket_limit;
|
TextView tv_ticket_term_of_validity;
|
TextView tv_use_or_activition;
|
ImageView iv_hint_img;
|
ImageView iv_ticket_state;
|
LinearLayout ll_coupon_use_or_send;
|
ImageView iv_coupon_use;
|
ImageView iv_coupon_send;
|
ImageView iv_welfare_doublt;
|
|
|
public ViewHolder(View convertView) {
|
super(convertView);
|
tv_ticket_type = convertView
|
.findViewById(R.id.tv_ticket_type);
|
tv_ticket_name = convertView
|
.findViewById(R.id.tv_ticket_name);
|
tv_ticket_surplus_date = convertView
|
.findViewById(R.id.tv_ticket_surplus_date);
|
tv_ticket_from = convertView.findViewById(R.id.tv_ticket_from);
|
tv_use_or_activition = convertView.findViewById(R.id.tv_use_or_activition);
|
fl_bottom_rule = convertView.findViewById(R.id.fl_bottom_rule);
|
ll_top_content = convertView.findViewById(R.id.ll_top_content);
|
ll_free_single_ticket = convertView.findViewById(R.id.ll_free_single_ticket);
|
tv_ticket_rule = convertView.findViewById(R.id.tv_ticket_rule);
|
tv_ticket_limit = convertView.findViewById(R.id.tv_ticket_limit);
|
tv_ticket_term_of_validity = convertView.findViewById(R.id.tv_ticket_term_of_validity);
|
iv_hint_img = convertView.findViewById(R.id.iv_hint_img);
|
iv_ticket_state = convertView.findViewById(R.id.iv_ticket_state);
|
ll_coupon_use_or_send = convertView.findViewById(R.id.ll_coupon_use_or_send);
|
iv_coupon_use = convertView.findViewById(R.id.iv_coupon_use);
|
iv_coupon_send = convertView.findViewById(R.id.iv_coupon_send);
|
iv_welfare_doublt = convertView.findViewById(R.id.iv_welfare_doublt);
|
}
|
}
|
|
|
}
|