Android实现RadioGroup之间的互斥且radioButton可以选择或取消

Android实现RadioGroup之间的互斥且radioButton可以选择或取消

关于

  我前段时间写了一篇《Android实现RadioGroup之间的互斥》,本以为功能需求到此结束了,没想到,现在要求两个radiogroup互斥,并且每个radioButton都可以选择和取消,好吧,所以有这第二篇这么一说了。

效果图

在这里插入图片描述

主界面

  布局可以去《Android实现RadioGroup之间的互斥》去看一下,这里直接贴修改后的页面代码了:

class RadioGroupActivity : AppCompatActivity() {

    private lateinit var viewBinding: ActivityRadioGroupBinding

    private var faceFeet = ""
    private var feet = ""
    private var faceBalance = ""
    private var window =""
    private var face = ""
    private var faceWindow = ""

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewBinding = ActivityRadioGroupBinding.inflate(layoutInflater)
        setContentView(viewBinding.root)
        initView()
        initRadioButton()
    }
    

    private fun initView() {
        viewBinding.tvSwitch2.setOnClickListener {
            setRadioButtonStatus(it,"faceWindow")
        }
        viewBinding.tvSwitch1.setOnClickListener {
            setRadioButtonStatus(it,"face")
        }
        viewBinding.tvSwitch3.setOnClickListener {
            setRadioButtonStatus(it,"faceBalance")
        }
        viewBinding.tvSwitch4.setOnClickListener {
            setRadioButtonStatus(it,"feet")
        }
        viewBinding.tvSwitch5.setOnClickListener {
            setRadioButtonStatus(it,"faceFeet")
        }
        viewBinding.tvSwitch6.setOnClickListener {
            setRadioButtonStatus(it,"window")
        }
    }

    private fun setRadioButtonStatus(view: View, value: String) {
        when(view.id){
            R.id.tvSwitch6 ->{
                if (value == window) {
                    viewBinding.rgFlowTwoSwitch.check(-1)
                    viewBinding.rgFlowSwitch.clearCheck()
                    window = ""
                } else {
                    window = value
                    feet = ""
                    faceFeet =""
                    faceBalance =""
                    face = ""
                    faceWindow = ""
                    viewBinding.rgFlowTwoSwitch.check(view.id)
                    viewBinding.rgFlowSwitch.clearCheck()

                }
            }
            R.id.tvSwitch5 ->{
                if (value == faceFeet) {
                    viewBinding.rgFlowTwoSwitch.check(-1)
                    viewBinding.rgFlowSwitch.clearCheck()
                    faceFeet = ""
                } else {
                    faceFeet = value
                    feet = ""
                    window = ""
                    faceBalance = ""
                    face = ""
                    faceWindow = ""
                    viewBinding.rgFlowTwoSwitch.check(view.id)
                    viewBinding.rgFlowSwitch.clearCheck()
                }
            }
            R.id.tvSwitch4 ->{
                if (value == feet) {
                    viewBinding.rgFlowTwoSwitch.check(-1)
                    viewBinding.rgFlowSwitch.clearCheck()
                    feet = ""
                } else {
                    feet = value
                    faceFeet = ""
                    window = ""
                    faceBalance = ""
                    face = ""
                    faceWindow = ""
                    viewBinding.rgFlowTwoSwitch.check(view.id)
                    viewBinding.rgFlowSwitch.clearCheck()
                }
            }
            R.id.tvSwitch3 ->{
                if (value == faceBalance) {
                    viewBinding.rgFlowSwitch.check(-1)
                    viewBinding.rgFlowTwoSwitch.clearCheck()
                    faceBalance = ""
                } else {
                    faceBalance = value
                    faceFeet = ""
                    feet = ""
                    face = ""
                    window = ""
                    faceWindow = ""
                    viewBinding.rgFlowSwitch.check(view.id)
                    viewBinding.rgFlowTwoSwitch.clearCheck()
                }
            }
            R.id.tvSwitch2 ->{
                if (value == faceWindow) {
                    viewBinding.rgFlowSwitch.check(-1)
                    viewBinding.rgFlowTwoSwitch.clearCheck()
                    faceWindow = ""
                } else {
                    faceWindow = value
                    face = ""
                    faceFeet = ""
                    feet = ""
                    window = ""
                    faceBalance = ""
                    viewBinding.rgFlowSwitch.check(view.id)
                    viewBinding.rgFlowTwoSwitch.clearCheck()
                }
            }
            R.id.tvSwitch1 ->{
                if (value == face) {
                    viewBinding.rgFlowSwitch.check(-1)
                    viewBinding.rgFlowTwoSwitch.clearCheck()
                    face = ""
                } else {
                    face = value
                    faceFeet = ""
                    faceWindow = ""
                    feet = ""
                    window = ""
                    faceBalance = ""
                    viewBinding.rgFlowSwitch.check(view.id)
                    viewBinding.rgFlowTwoSwitch.clearCheck()
                }
            }
        }
    }

    //初始化给某一个radioButton选中
    private fun initRadioButton(){
        val currentSelect = val currentSelect = "tvSwitch${2}"
        val currentId =resources.getIdentifier(currentSelect,"id",packageName)
        findViewById<RadioButton>(currentId)?.isChecked = true
        when(currentId){
            R.id.tvSwitch1 -> face = "face"
            R.id.tvSwitch2 -> faceWindow = "faceWindow"
            R.id.tvSwitch3 -> faceBalance = "faceBalance"
            R.id.tvSwitch4 -> feet = "feet"
            R.id.tvSwitch5 -> faceFeet = "faceFeet"
            R.id.tvSwitch6 -> window = "window"
        }
    }
}

  文章到此结束了,有问题欢迎批评指教,觉得不错的也请点个赞谢谢。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪の星空朝酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值