package com.tejia.lijin.app.ui.mine;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.graphics.Paint;
|
import android.graphics.Rect;
|
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.TextView;
|
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.entity.user.money.statistic.OrderMoneyTimeStatisticVO;
|
import com.tejia.lijin.app.util.TimeUtils;
|
|
import java.util.Calendar;
|
import java.util.List;
|
|
public class MyMoneyHistoryDetailAdapter extends RecyclerView.Adapter {
|
private RecyclerView mRecyclerView;
|
|
private List<OrderMoneyTimeStatisticVO> mList;
|
private Context mContext;
|
|
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 MyMoneyHistoryDetailActivity.IDateSlectListener dateSlectListener;
|
|
public MyMoneyHistoryDetailAdapter(Context context, List<OrderMoneyTimeStatisticVO> list, MyMoneyHistoryDetailActivity.IDateSlectListener listener) {
|
this.mList = list;
|
this.mContext = context;
|
this.dateSlectListener = listener;
|
}
|
|
@Override
|
public 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_money_history_list_detail, parent, false);
|
MyHolder holder = new MyHolder(view);
|
return holder;
|
}
|
}
|
|
/**
|
* 计算内容占用屏幕的宽度
|
*
|
* @param content
|
* @return
|
*/
|
private static Paint pFont = null;
|
|
private int computeTextWidth(float textSize, String content) {
|
if (pFont == null)
|
pFont = new Paint();
|
pFont.setTextSize(textSize);
|
Rect rect = new Rect();
|
//返回包围整个字符串的最小的一个Rect区域
|
content = content + "-";//多算一个字的宽度
|
pFont.getTextBounds(content, 0, content.length(), rect);
|
return rect.width();
|
}
|
|
private String getDate(String countDate) {
|
int dateType = 0;
|
String date = null;
|
if (countDate.contains("日")) {
|
dateType = 1;
|
long timestamp = TimeUtils.string2Millis(countDate, "yyyy年MM月dd日");
|
date = TimeUtils.millisToStringDate(timestamp, "yyyy-MM-dd");
|
} else {
|
dateType = 2;
|
long timestamp = TimeUtils.string2Millis(countDate, "yyyy年MM月");
|
date = TimeUtils.millisToStringDate(timestamp, "yyyy-MM");
|
}
|
return date;
|
}
|
|
private int getDateType(String countDate) {
|
int dateType = 0;
|
String date = null;
|
if (countDate.contains("日")) {
|
dateType = 1;
|
} else {
|
dateType = 2;
|
}
|
return dateType;
|
}
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
final MyHolder viewHolder = (MyHolder) holder;
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
|
int p = 0;
|
if (haveHeaderView()) {
|
if (haveFooterView() && position == mList.size() + 1) {
|
return;
|
}
|
p = position - 1;
|
} else if (haveFooterView() && position == mList.size()) {
|
return;
|
} else {
|
p = position;
|
}
|
final OrderMoneyTimeStatisticVO info = mList.get(p);
|
|
viewHolder.tv_date.setText(info.getCountDate());
|
viewHolder.tv_total_money.setText("¥ " + info.getTotalMoney());
|
viewHolder.tv_total_order.setText(info.getTotalNum() + "");
|
|
viewHolder.tv_myorder_money.setText("¥ " + info.getMineMoney());
|
viewHolder.tv_myorder_order.setText(info.getMineNum() + "");
|
|
viewHolder.tv_team_money.setText("¥ " + info.getTeamMoney());
|
viewHolder.tv_team_order.setText(info.getTeamNum() + "");
|
|
//收益详情
|
viewHolder.tv_detail.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
int dateType = getDateType(info.getCountDate());
|
String date = getDate(info.getCountDate());
|
mContext.startActivity(new Intent(mContext, MyMoneyDetailActivity.class).putExtra("date", date).putExtra("dateType", dateType));
|
}
|
});
|
|
|
if (getDateType(info.getCountDate()) == 1) {
|
viewHolder.tv_history_detail.setVisibility(View.GONE);
|
} else
|
viewHolder.tv_history_detail.setVisibility(View.VISIBLE);
|
|
//历史详情
|
viewHolder.tv_history_detail.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
String date = getDate(info.getCountDate());
|
long time = TimeUtils.string2Millis(date, "yyyy-MM");
|
Calendar ca = Calendar.getInstance();
|
ca.setTimeInMillis(time);
|
ca.add(Calendar.MONTH,1);
|
time=ca.getTimeInMillis();
|
time=time-1;
|
mContext.startActivity(new Intent(mContext, MyMoneyHistoryDetailActivity.class).putExtra("date", TimeUtils.millisToStringDate(time,"yyyy-MM-dd") ).putExtra("dateType", 1));
|
}
|
});
|
viewHolder.tv_date.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (dateSlectListener != null)
|
dateSlectListener.onDateClick(info);
|
}
|
});
|
|
|
}
|
}
|
|
@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 {
|
TextView tv_date, tv_history_detail, tv_detail;
|
FrameLayout fl_total, fl_myorder, fl_team;
|
TextView tv_total_money, tv_myorder_money, tv_team_money;
|
TextView tv_total_order, tv_myorder_order, tv_team_order;
|
|
public MyHolder(View convertView) {
|
super(convertView);
|
tv_date = convertView.findViewById(R.id.tv_date);
|
tv_history_detail = convertView.findViewById(R.id.tv_history_detail);
|
tv_detail = convertView.findViewById(R.id.tv_detail);
|
|
fl_total = convertView.findViewById(R.id.fl_total);
|
fl_myorder = convertView.findViewById(R.id.fl_myorder);
|
fl_team = convertView.findViewById(R.id.fl_team);
|
if (fl_total != null) {
|
((TextView) fl_total.findViewById(R.id.tv_name_1)).setText("总预估收益");
|
((TextView) fl_total.findViewById(R.id.tv_name_2)).setText("总付款订单数(笔)");
|
tv_total_money = fl_total.findViewById(R.id.tv_value_1);
|
tv_total_order = fl_total.findViewById(R.id.tv_value_2);
|
}
|
|
if (fl_myorder != null) {
|
((TextView) fl_myorder.findViewById(R.id.tv_name_1)).setText("预估我的收益");
|
((TextView) fl_myorder.findViewById(R.id.tv_name_2)).setText("付款订单数(笔)");
|
tv_myorder_money = fl_myorder.findViewById(R.id.tv_value_1);
|
tv_myorder_order = fl_myorder.findViewById(R.id.tv_value_2);
|
}
|
|
if (fl_team != null) {
|
((TextView) fl_team.findViewById(R.id.tv_name_1)).setText("预估团队收益");
|
((TextView) fl_team.findViewById(R.id.tv_name_2)).setText("付款订单数(笔)");
|
tv_team_money = fl_team.findViewById(R.id.tv_value_1);
|
tv_team_order = fl_team.findViewById(R.id.tv_value_2);
|
}
|
}
|
}
|
}
|