163 lines
7.0 KiB
Java
163 lines
7.0 KiB
Java
package com.xscm.modulemain.adapter;
|
||
|
||
import android.annotation.SuppressLint;
|
||
import android.content.Context;
|
||
import android.widget.TextView;
|
||
|
||
import androidx.core.content.ContextCompat;
|
||
|
||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||
import com.chad.library.adapter.base.BaseViewHolder;
|
||
import com.xscm.modulemain.R;
|
||
import com.xscm.moduleutil.bean.WithdrawalBean;
|
||
|
||
public class WithdrawalAdapter extends BaseQuickAdapter<WithdrawalBean, BaseViewHolder> {
|
||
// 状态常量(替代魔法值,增强可读性)
|
||
private static final int STATUS_PENDING = 1; // 待处理
|
||
private static final int STATUS_APPROVED = 2; // 已通过
|
||
private static final int STATUS_REJECTED = 3; // 已拒绝
|
||
private static final int STATUS_PAYING = 4; // 打款中
|
||
private static final int STATUS_PAY_FAILED = 5; // 打款失败
|
||
private static final int STATUS_PAID = 6; // 已打款
|
||
|
||
// 固定文本常量(避免硬编码,便于统一修改)
|
||
private static final String TEXT_AMOUNT = "提现金额";
|
||
private static final String TEXT_FEE = "手续费";
|
||
private static final String TEXT_TAX = "个人所得税";
|
||
private static final String TEXT_EXPECTED_DEFAULT = "预计到账(个税扣除前)";
|
||
private static final String TEXT_EXPECTED_REFUND = "退款金额";
|
||
private static final String TEXT_EXPECTED_ACTUAL = "实际到账";
|
||
private static final String TEXT_TAX_CALCULATING = "计算中...";
|
||
|
||
|
||
public WithdrawalAdapter() {
|
||
super(R.layout.item_withdrawal);
|
||
}
|
||
|
||
@SuppressLint("ResourceType")
|
||
@Override
|
||
protected void convert(BaseViewHolder helper, WithdrawalBean item) {
|
||
// 1. 基础文本设置(所有状态通用)
|
||
helper.setText(R.id.tv_amount, TEXT_AMOUNT)
|
||
.setText(R.id.tv_fee, TEXT_FEE)
|
||
.setText(R.id.tv_tax, TEXT_TAX)
|
||
.setText(R.id.tv_fee_value, item != null ? item.getWithdraw_fee() : "")
|
||
.setText(R.id.tv_amount_value, item != null ? item.getMoney() : "")
|
||
.setText(R.id.tv_expected_value, item != null ? item.getSurplus_money() : "")
|
||
.setText(R.id.tv_time, item != null ? item.getCreatetime() : "");
|
||
|
||
TextView tvStatus = helper.getView(R.id.tv_status);
|
||
tvStatus.setText(item != null ? item.getStatus_str() : "");
|
||
|
||
// 2. 处理item为空的边界情况
|
||
if (item == null) {
|
||
clearStatusUI(helper);
|
||
return;
|
||
}
|
||
|
||
// 3. 根据状态设置UI(使用switch替代多层if-else)
|
||
switch (item.getStatus()) {
|
||
case STATUS_PENDING:
|
||
setStatusUI(helper,
|
||
com.xscm.moduleutil.R.mipmap.dcl, // im_x图标
|
||
com.xscm.moduleutil.R.color.color_0DFFB9, // 状态文本颜色
|
||
TEXT_EXPECTED_DEFAULT, // 预计到账文本
|
||
TEXT_TAX_CALCULATING, // 个税文本
|
||
com.xscm.moduleutil.R.color.color_black); // 预计值颜色
|
||
break;
|
||
case STATUS_APPROVED:
|
||
setStatusUI(helper,
|
||
com.xscm.moduleutil.R.mipmap.dcl2,
|
||
com.xscm.moduleutil.R.color.color_999999,
|
||
TEXT_EXPECTED_DEFAULT,
|
||
TEXT_TAX_CALCULATING,
|
||
com.xscm.moduleutil.R.color.color_black);
|
||
break;
|
||
case STATUS_REJECTED:
|
||
setStatusUI(helper,
|
||
com.xscm.moduleutil.R.mipmap.dcl3,
|
||
com.xscm.moduleutil.R.color.color_ff8acc,
|
||
TEXT_EXPECTED_REFUND,
|
||
item.getReceived_tax_amount(),
|
||
com.xscm.moduleutil.R.color.color_black);
|
||
break;
|
||
case STATUS_PAYING:
|
||
setStatusUI(helper,
|
||
com.xscm.moduleutil.R.mipmap.dcl4,
|
||
com.xscm.moduleutil.R.color.color_68A5FF,
|
||
TEXT_EXPECTED_DEFAULT,
|
||
TEXT_TAX_CALCULATING,
|
||
com.xscm.moduleutil.R.color.color_black);
|
||
break;
|
||
case STATUS_PAY_FAILED:
|
||
setStatusUI(helper,
|
||
com.xscm.moduleutil.R.mipmap.dcl5,
|
||
com.xscm.moduleutil.R.color.color_ff8acc,
|
||
TEXT_EXPECTED_REFUND,
|
||
item.getReceived_tax_amount(),
|
||
com.xscm.moduleutil.R.color.color_black);
|
||
break;
|
||
case STATUS_PAID:
|
||
setStatusUI(helper,
|
||
com.xscm.moduleutil.R.mipmap.dcl6,
|
||
com.xscm.moduleutil.R.color.color_999999,
|
||
TEXT_EXPECTED_ACTUAL,
|
||
item.getReceived_tax_amount(),
|
||
com.xscm.moduleutil.R.color.color_2ADB88);
|
||
break;
|
||
default:
|
||
// 未知状态处理
|
||
setStatusUI(helper,
|
||
0, // 空图标
|
||
com.xscm.moduleutil.R.color.color_999999,
|
||
"", "", com.xscm.moduleutil.R.color.color_black);
|
||
tvStatus.setText("未知状态");
|
||
break;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 封装状态相关UI设置(消除重复代码)
|
||
*
|
||
* @param helper ViewHolder
|
||
* @param imXRes im_x的图标资源
|
||
* @param statusTextColor 状态文本颜色
|
||
* @param expectedText 预计到账文本
|
||
* @param taxValue 个税文本
|
||
* @param expectedValueColor 预计值文本颜色
|
||
*/
|
||
private void setStatusUI(BaseViewHolder helper, int imXRes, int statusTextColor,
|
||
String expectedText, String taxValue, int expectedValueColor) {
|
||
Context context = helper.itemView.getContext(); // 从itemView获取上下文,更可靠
|
||
|
||
// 设置im_x图标
|
||
if (imXRes != 0) {
|
||
helper.setBackgroundRes(R.id.im_x, imXRes);
|
||
}
|
||
|
||
// 设置状态文本颜色(使用ContextCompat兼容低版本)
|
||
TextView tvStatus = helper.getView(R.id.tv_status);
|
||
tvStatus.setTextColor(ContextCompat.getColor(context, statusTextColor));
|
||
|
||
// 设置其他文本
|
||
helper.setText(R.id.tv_expected, expectedText)
|
||
.setText(R.id.tv_tax_value, taxValue)
|
||
.setTextColor(R.id.tv_expected_value, ContextCompat.getColor(context, expectedValueColor));
|
||
}
|
||
|
||
/**
|
||
* 清空状态相关UI(处理item为null的情况)
|
||
*/
|
||
private void clearStatusUI(BaseViewHolder helper) {
|
||
helper.setBackgroundRes(R.id.im_x, 0)
|
||
.setText(R.id.tv_expected, "")
|
||
.setText(R.id.tv_tax_value, "")
|
||
.setTextColor(R.id.tv_expected_value, ContextCompat.getColor(helper.itemView.getContext(), com.xscm.moduleutil.R.color.color_black));
|
||
|
||
TextView tvStatus = helper.getView(R.id.tv_status);
|
||
tvStatus.setTextColor(ContextCompat.getColor(helper.itemView.getContext(), com.xscm.moduleutil.R.color.color_999999));
|
||
|
||
}
|
||
} |