package com.weikou.beibeivideo.ui.goldcorn;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.graphics.Color;
|
import android.graphics.Typeface;
|
import android.text.SpannableString;
|
import android.text.Spanned;
|
import android.text.style.AbsoluteSizeSpan;
|
import android.text.style.ForegroundColorSpan;
|
import android.text.style.StyleSpan;
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.RelativeLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.androidquery.AQuery;
|
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.target.DrawableImageViewTarget;
|
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.lcjian.library.util.common.DimenUtils;
|
import com.lcjian.library.util.glide.GlideRoundTransform;
|
import com.lcjian.library.widget.RatioLayout;
|
import com.lzj.gallery.library.views.BannerViewPager;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.BeibeiVideoApplication;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.entity.HomeType;
|
import com.weikou.beibeivideo.entity.HomeVideo;
|
import com.weikou.beibeivideo.entity.UserInfo;
|
import com.weikou.beibeivideo.entity.VideoType;
|
import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
|
import com.weikou.beibeivideo.entity.recommend.RecommendContent;
|
import com.weikou.beibeivideo.entity.video.holder.FooterViewHolder;
|
import com.weikou.beibeivideo.entity.video.holder.HeaderViewHolder;
|
import com.weikou.beibeivideo.entity.vo.CouponVideoInfo;
|
import com.weikou.beibeivideo.entity.vo.GoldCornTask;
|
import com.weikou.beibeivideo.entity.vo.SignInGoldCornDateData;
|
import com.weikou.beibeivideo.entity.vo.SignInInfo;
|
import com.weikou.beibeivideo.ui.common.VideosLiveActivity;
|
import com.weikou.beibeivideo.ui.discover.StarsActivity;
|
import com.weikou.beibeivideo.ui.login.LoginActivity;
|
import com.weikou.beibeivideo.ui.main.MainActivity;
|
import com.weikou.beibeivideo.ui.mine.BrowserActivity;
|
import com.weikou.beibeivideo.ui.video.VideoRecommendAdapter;
|
import com.weikou.beibeivideo.util.JumpActivityUtil;
|
import com.weikou.beibeivideo.util.UserUtil;
|
import com.weikou.beibeivideo.util.ad.ExpressAdManager;
|
import com.weikou.beibeivideo.util.downutil.StringUtils;
|
import com.weikou.beibeivideo.util.ui.DividerItemDecoration;
|
import com.weikou.beibeivideo.util.ui.ToastUtil;
|
|
import org.apache.http.Header;
|
import org.json.JSONArray;
|
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.TreeSet;
|
|
import androidx.annotation.NonNull;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
|
|
public class GoldCornAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
|
private final static String TAG = "GoldCornAdapter";
|
|
private Activity mContext;
|
List<CouponVideoInfo> mVideoList;
|
List<GoldCornTask> mTaskList;
|
private LayoutInflater inflater;
|
private IGoldCornActionListener mTaskClickListener;
|
private String mCouponExchangeUrl;
|
private SignInInfo signInInfo;
|
|
public final int TYPE_SIGN_IN = 10001;
|
public final int TYPE_COUPON = 10002;
|
public final int TYPE_TASK = 10003;
|
|
private Gson gson = new GsonBuilder().setVersion(1.0).setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
|
|
public void setSignInfo(SignInInfo signInInfo) {
|
this.signInInfo = signInInfo;
|
}
|
|
public GoldCornAdapter(Activity context, List<CouponVideoInfo> videoList, List<GoldCornTask> taskList, String couponExchangeUrl, SignInInfo signInInfo, IGoldCornActionListener taskClickListener) {
|
this.mContext = context;
|
this.mVideoList = videoList;
|
this.mTaskList = taskList;
|
this.mTaskClickListener = taskClickListener;
|
this.mCouponExchangeUrl = couponExchangeUrl;
|
this.signInInfo = signInInfo;
|
inflater = LayoutInflater.from(mContext);
|
}
|
|
@Override
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
switch (viewType) {
|
case TYPE_SIGN_IN:
|
return new SignInHolder(inflater.inflate(R.layout.item_gold_corn_sign_in, null, false));
|
case TYPE_COUPON:
|
return new VideoCouponHolder(inflater.inflate(R.layout.item_gold_corn_coupon, null, false));
|
case TYPE_TASK:
|
return new TaskHolder(inflater.inflate(R.layout.item_gold_corn_task, null, false));
|
}
|
return null;
|
}
|
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int p) {
|
if (viewHolder instanceof SignInHolder) {
|
SignInHolder signInHolder = (SignInHolder) viewHolder;
|
//个人信息填充
|
if (UserUtil.isLogin(BeibeiVideoApplication.application)) {
|
UserInfo userInfo = UserUtil.getLoginUserInfo(BeibeiVideoApplication.application);
|
Glide.with(signInHolder.mAquery.id(R.id.iv_portrait).getContext()).load(userInfo.getPortrait()).apply(new RequestOptions().dontAnimate().diskCacheStrategy(DiskCacheStrategy.ALL)).placeholder(R.drawable.ic_portrait_default)
|
.transform(new GlideRoundTransform(signInHolder.mAquery.id(R.id.iv_portrait).getContext(), 50))
|
.into(signInHolder.mAquery.id(R.id.iv_portrait).getImageView());
|
signInHolder.mAquery.id(R.id.tv_gold_corn).text(signInInfo.getBalance() + "");
|
signInHolder.mAquery.id(R.id.ll_user).visibility(View.VISIBLE);
|
} else
|
signInHolder.mAquery.id(R.id.ll_user).visibility(View.GONE);
|
|
signInHolder.mAquery.id(R.id.tv_record).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (!UserUtil.isLogin(mContext)) {
|
UserUtil.toLogin(mContext);
|
return;
|
}
|
mContext.startActivity(new Intent(mContext, BrowserActivity.class).putExtra("url", signInInfo.getSignInConfig().getRecordUrl()).putExtra("close", false));
|
}
|
});
|
|
signInHolder.mAquery.id(R.id.tv_rule).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
mContext.startActivity(new Intent(mContext, BrowserActivity.class).putExtra("url", signInInfo.getSignInConfig().getRuleUrl()).putExtra("close", false));
|
}
|
});
|
|
|
signInHolder.mAquery.id(R.id.tv_sign_in).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (mTaskClickListener != null)
|
mTaskClickListener.onSignIn();
|
}
|
});
|
|
signInHolder.mAquery.id(R.id.iv_input).clicked(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (signInInfo != null && signInInfo.getSignInConfig() != null && signInInfo.getSignInConfig().getUserJump() != null) {
|
JumpActivityUtil.jumpPage(mContext, signInInfo.getSignInConfig().getUserJump(), JumpActivityUtil.getParamsJSON(signInInfo.getSignInConfig().getUserJumpParams()));
|
}
|
}
|
});
|
|
if (signInInfo.isCanSignIn()) {
|
signInHolder.mAquery.id(R.id.tv_sign_in).enabled(true);
|
} else {
|
signInHolder.mAquery.id(R.id.tv_sign_in).enabled(false);
|
}
|
|
if (signInInfo.getDateList() == null || signInInfo.getDateList().size() != 7) {
|
signInHolder.mAquery.id(R.id.ll_gold_date).visibility(View.GONE);
|
return;
|
}
|
signInHolder.mAquery.id(R.id.ll_gold_date).visibility(View.VISIBLE);
|
|
for (int i = 0; i < signInInfo.getDateList().size(); i++) {
|
int scoreId = getId(BeibeiVideoApplication.application, "tv_score_" + (i + 1));
|
int dateId = getId(BeibeiVideoApplication.application, "tv_date_" + (i + 1));
|
signInHolder.mAquery.id(scoreId).text(signInInfo.getDateList().get(i).getGoldCorn());
|
signInHolder.mAquery.id(dateId).text(signInInfo.getDateList().get(i).getDate());
|
|
|
if (signInInfo.getDateList().get(i).isSelected()) {
|
for (int j = i; j > -1; j--) {
|
scoreId = getId(BeibeiVideoApplication.application, "tv_score_" + (j + 1));
|
signInHolder.mAquery.id(scoreId).background(R.drawable.shape_gold_corn_sign_in_score_bg_highlight);
|
signInHolder.mAquery.id(scoreId).width(31);
|
signInHolder.mAquery.id(scoreId).height(31);
|
signInHolder.mAquery.id(scoreId).margin(0, 0, 0, 0);
|
|
if (j > 0) {
|
int spaceId = getId(BeibeiVideoApplication.application, "v_space_" + j);
|
signInHolder.mAquery.id(spaceId).backgroundColor(Color.WHITE);
|
}
|
}
|
} else {
|
signInHolder.mAquery.id(scoreId).background(R.drawable.shape_gold_corn_sign_in_score_bg);
|
signInHolder.mAquery.id(scoreId).width(27);
|
signInHolder.mAquery.id(scoreId).height(27);
|
signInHolder.mAquery.id(scoreId).margin(2, 2, 2, 2);
|
if (i > 0) {
|
Log.i(TAG, "tv_space_" + i);
|
int spaceId = getId(BeibeiVideoApplication.application, "v_space_" + i);
|
signInHolder.mAquery.id(spaceId).backgroundColor(Color.parseColor("#2CB3FF"));
|
}
|
}
|
}
|
|
int start = 5;
|
int end = 5 + (signInInfo.getSignDay() + "").length();
|
|
SpannableString spannableString = new SpannableString("连续签到:" + signInInfo.getSignDay() + "天");
|
spannableString.setSpan(new AbsoluteSizeSpan(com.lcjian.library.util.common.DimenUtils.spToPixels(16, signInHolder.mAquery.getContext())), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FFFC00")), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
spannableString.setSpan(new StyleSpan(Typeface.BOLD), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
signInHolder.mAquery.id(R.id.tv_sign_in_day_count).text(spannableString);
|
|
|
} else if (viewHolder instanceof VideoCouponHolder) {
|
VideoCouponHolder couponHolder = (VideoCouponHolder) viewHolder;
|
|
Glide.with(mContext).load(mVideoList.get(0).getPicture()).apply(new RequestOptions().centerCrop()).transform(new GlideRoundTransform(mContext, 6)).transition(withCrossFade()).placeholder(R.drawable.shape_video_list_cover_placeholder).diskCacheStrategy(DiskCacheStrategy.ALL).into(couponHolder.iv_cover_1);
|
|
|
Glide.with(mContext).load(mVideoList.get(1).getPicture()).apply(new RequestOptions().centerCrop()).transform(new GlideRoundTransform(mContext, 6)).transition(withCrossFade()).placeholder(R.drawable.shape_video_list_cover_placeholder).diskCacheStrategy(DiskCacheStrategy.ALL).into(couponHolder.iv_cover_2);
|
|
|
Glide.with(mContext).load(mVideoList.get(2).getPicture()).apply(new RequestOptions().centerCrop()).transform(new GlideRoundTransform(mContext, 6)).transition(withCrossFade()).placeholder(R.drawable.shape_video_list_cover_placeholder).diskCacheStrategy(DiskCacheStrategy.ALL).into(couponHolder.iv_cover_3);
|
|
|
couponHolder.tv_exchange.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
mContext.startActivity(new Intent(mContext, BrowserActivity.class).putExtra("url", mCouponExchangeUrl).putExtra("close", false));
|
}
|
});
|
|
|
} else if (viewHolder instanceof TaskHolder) {
|
TaskHolder taskHolder = (TaskHolder) viewHolder;
|
taskHolder.rl_task.setLayoutManager(new LinearLayoutManager(mContext));
|
|
DividerItemDecoration decoration = new DividerItemDecoration();
|
decoration.setSize(DimenUtils.dip2px(mContext, 3));
|
|
//清除之前的间隔
|
if (taskHolder.rl_task.getItemDecorationCount() == 0) {
|
taskHolder.rl_task.addItemDecoration(decoration);
|
}
|
taskHolder.rl_task.setAdapter(new TaskAdapter());
|
}
|
}
|
|
|
private static int getId(Context paramContext, String paramString) {
|
return paramContext.getResources().getIdentifier(paramString, "id",
|
paramContext.getPackageName());
|
}
|
|
@Override
|
public int getItemCount() {
|
int count = 1;
|
if (mVideoList != null && mVideoList.size() > 0)
|
count++;
|
if (mTaskList != null && mTaskList.size() > 0)
|
count++;
|
return count;
|
}
|
|
/**
|
* banner第一栏,视频内容第二栏,广告第三栏和最后一栏
|
*
|
* @param position
|
* @return
|
*/
|
//获取类型
|
@Override
|
public int getItemViewType(int position) {
|
if (position == 0)
|
return TYPE_SIGN_IN;
|
|
switch (position) {
|
case 0:
|
return TYPE_SIGN_IN;
|
|
case 1: {
|
if (mVideoList != null && mVideoList.size() > 0)
|
return TYPE_COUPON;
|
else if (mTaskList != null && mTaskList.size() > 0) {
|
return TYPE_TASK;
|
}
|
}
|
|
case 2:
|
return TYPE_TASK;
|
}
|
|
return 0;
|
}
|
|
class SignInHolder extends RecyclerView.ViewHolder {
|
AQuery mAquery;
|
|
public SignInHolder(View convertView) {
|
super(convertView);
|
mAquery = new AQuery(convertView);
|
}
|
}
|
|
|
class VideoCouponHolder extends RecyclerView.ViewHolder {
|
|
ImageView iv_cover_1, iv_cover_2, iv_cover_3;
|
TextView tv_exchange;
|
|
public VideoCouponHolder(View convertView) {
|
super(convertView);
|
iv_cover_1 = convertView.findViewById(R.id.iv_cover_1);
|
iv_cover_2 = convertView.findViewById(R.id.iv_cover_2);
|
iv_cover_3 = convertView.findViewById(R.id.iv_cover_3);
|
tv_exchange = convertView.findViewById(R.id.tv_exchange);
|
}
|
}
|
|
|
class TaskHolder extends RecyclerView.ViewHolder {
|
|
RecyclerView rl_task;
|
|
public TaskHolder(View convertView) {
|
super(convertView);
|
rl_task = convertView.findViewById(R.id.rl_task);
|
}
|
}
|
|
|
class TaskAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
|
@NonNull
|
@Override
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
return new TaskListHolder(inflater.inflate(R.layout.item_gold_corn_task_list, parent, false));
|
}
|
|
@Override
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
GoldCornTask task = mTaskList.get(position);
|
TaskListHolder viewHolder = (TaskListHolder) holder;
|
viewHolder.tv_name.setText(task.getTitle());
|
viewHolder.tv_goldcorn.setText(task.getGoldCorn());
|
viewHolder.tv_desc.setText(task.getDesc());
|
Glide.with(mContext).load(task.getIcon()).into(viewHolder.iv_icon);
|
viewHolder.tv_btn.setText(task.getActionName());
|
viewHolder.tv_btn.setEnabled(task.isEnable());
|
viewHolder.tv_btn.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (mTaskClickListener != null)
|
mTaskClickListener.onClick(position, task);
|
}
|
});
|
|
}
|
|
@Override
|
public int getItemCount() {
|
return mTaskList == null ? 0 : mTaskList.size();
|
}
|
|
|
class TaskListHolder extends RecyclerView.ViewHolder {
|
|
ImageView iv_icon;
|
TextView tv_name;
|
TextView tv_goldcorn;
|
TextView tv_desc;
|
TextView tv_btn;
|
|
public TaskListHolder(@NonNull View itemView) {
|
super(itemView);
|
iv_icon = itemView.findViewById(R.id.iv_icon);
|
tv_name = itemView.findViewById(R.id.tv_name);
|
tv_goldcorn = itemView.findViewById(R.id.tv_goldcorn);
|
tv_desc = itemView.findViewById(R.id.tv_desc);
|
tv_btn = itemView.findViewById(R.id.tv_btn);
|
}
|
}
|
}
|
|
public interface IGoldCornActionListener {
|
|
public void onClick(int p, GoldCornTask task);
|
|
public void onSignIn();
|
}
|
|
|
}
|