Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/adapter/WithdrawalAdapter.java

163 lines
7.0 KiB
Java
Raw Normal View History

2025-10-28 16:56:13 +08:00
package com.xscm.modulemain.adapter;
2025-10-20 10:16:44 +08:00
import android.annotation.SuppressLint;
2025-10-24 17:52:11 +08:00
import android.content.Context;
2025-10-20 10:16:44 +08:00
import android.widget.TextView;
2025-10-24 17:52:11 +08:00
import androidx.core.content.ContextCompat;
2025-10-20 10:16:44 +08:00
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
2025-10-28 16:56:13 +08:00
import com.xscm.modulemain.R;
2025-10-20 10:16:44 +08:00
import com.xscm.moduleutil.bean.WithdrawalBean;
public class WithdrawalAdapter extends BaseQuickAdapter<WithdrawalBean, BaseViewHolder> {
2025-10-24 17:52:11 +08:00
// 状态常量(替代魔法值,增强可读性)
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 = "计算中...";
2025-10-20 10:16:44 +08:00
public WithdrawalAdapter() {
super(R.layout.item_withdrawal);
}
@SuppressLint("ResourceType")
@Override
protected void convert(BaseViewHolder helper, WithdrawalBean item) {
2025-10-24 17:52:11 +08:00
// 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() : "");
2025-10-20 10:16:44 +08:00
2025-10-24 17:52:11 +08:00
// 2. 处理item为空的边界情况
if (item == null) {
clearStatusUI(helper);
return;
2025-10-20 10:16:44 +08:00
}
2025-10-24 17:52:11 +08:00
// 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);
2025-10-20 10:16:44 +08:00
}
2025-10-24 17:52:11 +08:00
// 设置状态文本颜色使用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));
2025-10-20 10:16:44 +08:00
}
2025-10-24 17:52:11 +08:00
}