package com.yeshi.ec.rebate.myapplication.ui.mine;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.support.v7.widget.GridLayoutManager;
|
import android.support.v7.widget.RecyclerView;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
|
import com.bumptech.glide.Glide;
|
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.StringUtils;
|
import com.yeshi.ec.rebate.myapplication.R;
|
import com.yeshi.ec.rebate.myapplication.entity.Account;
|
import com.yeshi.ec.rebate.myapplication.ui.invite.ShareBrowserActivity;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/12/5.
|
* 主页---优惠券适配器
|
*/
|
|
public class AccountDescAdapter33 extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private RecyclerView mRecyclerView;
|
|
private List<Account> mList;
|
private Context mContext;
|
|
private View VIEW_FOOTER;
|
private View VIEW_HEADER;
|
|
private View.OnClickListener titleClickListener;
|
|
//筛选类型 0-全部 1-收入 2-支出
|
|
|
private int type = 0;
|
|
public void setType(int type) {
|
this.type = type;
|
}
|
|
//Type
|
private int TYPE_NORMAL = 1000;
|
private int TYPE_HEADER = 1001;
|
private int TYPE_FOOTER = 1002;
|
private int TYPE_TITLE = 1003;
|
|
private DisplayImageOptions options;
|
|
public AccountDescAdapter33(Context context, List<Account> list, View.OnClickListener titleClickListener) {
|
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.titleClickListener = titleClickListener;
|
}
|
|
|
@Override
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
if (viewType == TYPE_FOOTER) {
|
return new ContentHolder(VIEW_FOOTER);
|
} else if (viewType == TYPE_HEADER) {
|
return new ContentHolder(VIEW_HEADER);
|
} else if (viewType == TYPE_TITLE) {//标题
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_account_desc_title, parent, false);
|
TitleHolder holder = new TitleHolder(view);
|
return holder;
|
} else {//普通数据
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_account_desc_content, parent, false);
|
ContentHolder holder = new ContentHolder(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
|
if (mList.size() == 0 || (mList.size() > 0 && position == mList.size()))
|
return;
|
final Account info = mList.get(position);
|
if (holder instanceof TitleHolder) {
|
if (info.getMonth() == null)
|
return;
|
((TitleHolder) holder).tv_select_time.setText(info.getMonth().getYear()
|
+ "年" + info.getMonth().getMonth() + "月");
|
((TitleHolder) holder).tv_all_income.setText("总收益:¥" + info.getMonth().getIncome());
|
((TitleHolder) holder).tv_all_expenses.setText("总取出:¥" + info.getMonth().getExpend());
|
|
if (type == 0) {
|
((TitleHolder) holder).tv_all_income.setVisibility(View.VISIBLE);
|
((TitleHolder) holder).tv_all_expenses.setVisibility(View.VISIBLE);
|
} else if (type == 1) {
|
((TitleHolder) holder).tv_all_income.setVisibility(View.VISIBLE);
|
((TitleHolder) holder).tv_all_expenses.setVisibility(View.GONE);
|
} else {
|
((TitleHolder) holder).tv_all_income.setVisibility(View.GONE);
|
((TitleHolder) holder).tv_all_expenses.setVisibility(View.VISIBLE);
|
}
|
|
|
((TitleHolder) holder).view.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (titleClickListener != null) {
|
View view = new View(mContext);
|
view.setTag(info.getMonth().getYear()
|
+ "年" + info.getMonth().getMonth() + "月");
|
titleClickListener.onClick(view);
|
}
|
}
|
});
|
|
} else if (holder instanceof ContentHolder) {
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
if (info.getDetail() == null)
|
return;
|
Glide.with(mContext).load(info.getDetail().getType().getPortrait()).into(((ContentHolder) holder).iv_info_img);
|
if (!StringUtils.isEmpty(info.getDetail().getType().getHelpUrl())) {
|
((ContentHolder) holder).iv_doubt.setVisibility(View.VISIBLE);
|
((ContentHolder) holder).iv_doubt.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
Intent intent = new Intent(mContext, ShareBrowserActivity.class);
|
intent.putExtra("url", info.getDetail().getType().getHelpUrl());
|
mContext.startActivity(intent);
|
}
|
});
|
} else {
|
((ContentHolder) holder).iv_doubt.setVisibility(View.GONE);
|
}
|
((ContentHolder) holder).tv_title.setText(info.getDetail().getTitle());
|
BigDecimal money = new BigDecimal(info.getDetail().getMoney());
|
if (money.compareTo(new BigDecimal(0)) < 0) {
|
money = money.abs();
|
((ContentHolder) holder).tv_money_info.setText("- ¥ " + money);
|
((ContentHolder) holder).tv_money_info.setTextColor(mContext.getResources().getColor(R.color.black));
|
} else {
|
((ContentHolder) holder).tv_money_info.setText("+ ¥ " + money);
|
((ContentHolder) holder).tv_money_info.setTextColor(mContext.getResources().getColor(R.color.main_text_color));
|
}
|
if (StringUtils.isEmpty(info.getDetail().getDescInfo())) {
|
((ContentHolder) holder).tv_desc_info.setVisibility(View.GONE);
|
} else {
|
((ContentHolder) holder).tv_desc_info.setVisibility(View.VISIBLE);
|
((ContentHolder) holder).tv_desc_info.setText(info.getDetail().getDescInfo());
|
}
|
((ContentHolder) holder).tv_createtime.setText(info.getDetail().getCreateTime());
|
|
if (!StringUtils.isEmpty(info.getDetail().getSubTitle())) {
|
((ContentHolder) holder).tv_sub_title.setVisibility(View.VISIBLE);
|
((ContentHolder) holder).tv_sub_title.setText(info.getDetail().getSubTitle());
|
}else{
|
((ContentHolder) holder).tv_sub_title.setVisibility(View.GONE);
|
}
|
}
|
}
|
}
|
|
@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 if (mList.get(position).getMonth() != null) {
|
return TYPE_TITLE;
|
} 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 ContentHolder extends RecyclerView.ViewHolder {
|
ImageView iv_info_img, iv_doubt;
|
TextView tv_title;
|
TextView tv_money_info;
|
TextView tv_desc_info, tv_sub_title;
|
TextView tv_createtime;
|
|
|
public ContentHolder(View convertView) {
|
super(convertView);
|
iv_info_img = convertView.findViewById(R.id.iv_info_img);
|
tv_title = convertView
|
.findViewById(R.id.tv_title);
|
tv_money_info = convertView.findViewById(R.id.tv_money_info);
|
tv_desc_info = convertView.findViewById(R.id.tv_desc_info);
|
tv_createtime = convertView.findViewById(R.id.tv_createtime);
|
iv_doubt = convertView.findViewById(R.id.iv_doubt);
|
tv_sub_title = convertView.findViewById(R.id.tv_sub_title);
|
convertView.setTag(false);
|
}
|
}
|
|
public class TitleHolder extends RecyclerView.ViewHolder {
|
TextView tv_select_time;
|
TextView tv_all_income;
|
TextView tv_all_expenses;
|
View view;
|
|
public TitleHolder(View convertView) {
|
super(convertView);
|
view = convertView;
|
tv_select_time = convertView.findViewById(R.id.tv_select_time);
|
tv_all_income = convertView
|
.findViewById(R.id.tv_all_income);
|
tv_all_expenses = convertView.findViewById(R.id.tv_all_expenses);
|
convertView.setTag(true);
|
}
|
}
|
}
|