Kotlin создать флажок и удалить флажок программно

Я могу добавить флажок динамически, когда я отмечаю существующий флажок, однако я не могу удалить новый флажок, когда снимаю существующий флажок.

baseCheckBox.setOnClickListener(View.OnClickListener {
            val linearLayout = findViewById(R.id.newLinearLayout) as LinearLayout

            if(baseCheckBox.isChecked){



                val newBox= CheckBox(this)

                newBox.text = "New CheckBox"
                newBox.isChecked = true
                linearLayout.addView(newBox)

            }

            else{
                val tempLayout = findViewById(1) as LinearLayout

            }
1
0
282
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Один из способов сделать это - сохранить ссылку на вновь созданный Checkbox в теге baseCheckBox, чтобы вы могли получить ее и удалить:

baseCheckBox.setOnClickListener{
    val linearLayout = findViewById<LinearLayout>(R.id.newLinearLayout)

    if (baseCheckBox.isChecked) {
        val newBox = CheckBox(this)
        newBox.text = "New CheckBox"
        newBox.isChecked = true
        linearLayout.addView(newBox)
        baseCheckBox.setTag(newBox)
    } else {
        try {
            val cb = baseCheckBox.tag as CheckBox
            linearLayout.removeView(cb)
            baseCheckBox.tag = null
        } catch (e: Exception) {
        }
    }
}

Большое спасибо! Могу ли я добавить идентификатор? Это потому, что я хочу получить значение, чтобы представить его на тосте. И можно ли отобразить несколько флажков, т.е. установить несколько тегов?

Abeart 31.10.2018 15:51

Да, с setId(integer number) можно, но проблема в том, что вы не узнаете, уникальна ли она, когда попытаетесь ее найти. С помощью приведенного выше кода вы можете получить ссылку на созданный флажок, взяв его из тега baseCheckBox, как и я: val cb = baseCheckBox.tag as CheckBox

forpas 31.10.2018 15:56

Спасибо. Я попытался добавить еще один флажок и установить другой тег в том же baseCheckBox, однако он, похоже, не удаляет его. Тег работает только один раз?

Abeart 31.10.2018 16:29

Да, тег содержит одну ссылку.

forpas 31.10.2018 16:32

Другие вопросы по теме