Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/adapter/WithdrawalAdapter.java
2025-11-07 09:22:39 +08:00

163 lines
7.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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));
}
}