| | |
| | | |
| | | // 支付方式相关属性 |
| | | private var paymentMethod: String = "现金" |
| | | private var paymentId: Long = 0 |
| | | private var paymentId: String = "" |
| | | private var paymentMethodList: List<PaymentMethod> = listOf() |
| | | |
| | | companion object { |
| | |
| | | cardNum = intent.getStringExtra("cardNum") |
| | | |
| | | initView() |
| | | // 获取支付方式 |
| | | getPaymentMethods() |
| | | |
| | | // 无论是否有clientNum,都先显示读卡界面,等待用户刷新卡 |
| | | resetToReadingState() |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取支付方式列表 |
| | | */ |
| | | private fun getPaymentMethods() { |
| | | ApiManager.getInstance().requestGetLoading( |
| | | this, |
| | | "sell/paymentmethod/get", |
| | | PaymentMethodResponse::class.java, |
| | | null, |
| | | object : SubscriberListener<BaseResponse<PaymentMethodResponse>>() { |
| | | override fun onNext(response: BaseResponse<PaymentMethodResponse>) { |
| | | if (response.success) { |
| | | // 获取支付方式列表 |
| | | val paymentMethods = response.content?.obj ?: listOf() |
| | | if (paymentMethods.isNotEmpty()) { |
| | | paymentMethodList = paymentMethods |
| | | // 更新支付方式显示 |
| | | updatePaymentMethodRadioGroup() |
| | | } |
| | | } else { |
| | | Toast.makeText( |
| | | this@CardReplaceActivity, |
| | | "获取支付方式失败: ${response.msg}", |
| | | Toast.LENGTH_SHORT |
| | | ).show() |
| | | } |
| | | } |
| | | |
| | | override fun onError(e: Throwable?) { |
| | | super.onError(e) |
| | | Toast.makeText( |
| | | this@CardReplaceActivity, |
| | | "获取支付方式失败: ${e?.message ?: "网络异常"}", |
| | | Toast.LENGTH_SHORT |
| | | ).show() |
| | | } |
| | | } |
| | | ) |
| | | } |
| | | |
| | | /** |
| | | * 更新支付方式RadioGroup |
| | | */ |
| | | private fun updatePaymentMethodRadioGroup() { |
| | | // 清空原有RadioButton |
| | | binding.paymentMethodGroup.removeAllViews() |
| | | |
| | | // 动态添加RadioButton |
| | | paymentMethodList.forEachIndexed { index, method -> |
| | | val radioButton = RadioButton(this) |
| | | radioButton.id = View.generateViewId() // 生成唯一ID |
| | | radioButton.layoutParams = android.widget.LinearLayout.LayoutParams( |
| | | 0, |
| | | resources.getDimensionPixelSize(R.dimen.dimen_40), |
| | | 1.0f |
| | | ) |
| | | |
| | | // 如果不是最后一个按钮,添加右边距 |
| | | if (index < paymentMethodList.size - 1) { |
| | | (radioButton.layoutParams as android.widget.LinearLayout.LayoutParams).rightMargin = |
| | | resources.getDimensionPixelSize(R.dimen.dimen_15) |
| | | } |
| | | |
| | | radioButton.text = method.name |
| | | radioButton.background = resources.getDrawable(R.drawable.radio_selector) |
| | | radioButton.buttonDrawable = null |
| | | radioButton.gravity = android.view.Gravity.CENTER |
| | | radioButton.setTextColor(resources.getColorStateList(R.color.radio_button_text_color)) |
| | | radioButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f) |
| | | |
| | | // 添加到RadioGroup |
| | | binding.paymentMethodGroup.addView(radioButton) |
| | | |
| | | // 默认选中第一个 |
| | | if (index == 0) { |
| | | radioButton.isChecked = true |
| | | paymentMethod = method.name |
| | | paymentId = method.id |
| | | } |
| | | } |
| | | |
| | | // 设置支付方式选择监听 |
| | | binding.paymentMethodGroup.setOnCheckedChangeListener { group, checkedId -> |
| | | // 根据选中的ID获取支付方式 |
| | | for (i in 0 until group.childCount) { |
| | | val radioButton = group.getChildAt(i) as RadioButton |
| | | if (radioButton.id == checkedId) { |
| | | paymentMethod = radioButton.text.toString() |
| | | paymentId = paymentMethodList[i].id |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 重置到读卡状态 |