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

326 阅读1分钟

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"
        }
    }
}

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