Получить текст выбранной пары флажков Android?

У меня есть 700 флажков в моей деятельности xml. Мне нужно получить текст всех выбранных флажков.

Один из подходов состоит в том, чтобы проверить, является ли checkbox1 isChecked(), и получить текст, но делать это для 700 флажков слишком сложно.

У вас есть флажки в ListView/RecyclerView?

Janwilx72 06.02.2019 13:38
0
1
105
1

Ответы 1

Я думаю, что лучшим подходом может быть начало с пустого массива строк (представляющего нулевые выбранные флажки). Каждый раз, когда вы устанавливаете флажок, добавляйте его текст в массив, каждый раз, когда вы снимаете флажок, удаляйте эту строку из массива (если она там существует). В конце концов, вам просто нужно зациклить свой массив, чтобы получить выбранные строки

Обновлено:

class MainActivity : AppCompatActivity(), CompoundButton.OnCheckedChangeListener {

private lateinit var checkbox1: CheckBox
private lateinit var checkbox2: CheckBox
private lateinit var checkboxContainer: ConstraintLayout
private var checkedStrings = ArrayList<String>()

override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    checkbox1 = findViewById(R.id.checkbox1)
    checkbox2 = findViewById(R.id.checkbox2)
    checkboxContainer = findViewById(R.id.checkboxContainer)

    checkbox1.setOnCheckedChangeListener(this)
    checkbox2.setOnCheckedChangeListener(this)

    //or, if you have the checkboxes statically added to your layout, which I suspect you do, you can loop through the view like:
    for (i in 0..checkboxContainer.childCount){
        if (checkboxContainer.getChildAt(i) is CheckBox){
            (checkboxContainer.getChildAt(i) as CheckBox).setOnCheckedChangeListener(this)
        }
    }
}

override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {

    val checkBoxString = (buttonView as CheckBox).text.toString()

    if (isChecked){
        checkedStrings.add(checkBoxString)
    }else{
        checkedStrings.remove(checkBoxString)
    }
}

fun processStrings(){

    // at the end of the iteration/screen/whatever you can check the content of the checkedStrings array like, for instance:

    for (string in checkedStrings){
        Log.e("print string", string)
    }
}
}

спасибо за ваши комментарии, пожалуйста, если вы объясните на примере. спасибо, чандан

Chandan Bera 06.02.2019 14:50

@ChandanBera Я отредактировал свой ответ, указав для этого быстрый пример Kotlin. Не проверял, но должно работать

Tiago Ornelas 06.02.2019 15:40

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