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 { // 状态常量(替代魔法值,增强可读性) 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)); } }