У меня есть 700 флажков в моей деятельности xml. Мне нужно получить текст всех выбранных флажков.
Один из подходов состоит в том, чтобы проверить, является ли checkbox1 isChecked(), и получить текст, но делать это для 700 флажков слишком сложно.
Я думаю, что лучшим подходом может быть начало с пустого массива строк (представляющего нулевые выбранные флажки). Каждый раз, когда вы устанавливаете флажок, добавляйте его текст в массив, каждый раз, когда вы снимаете флажок, удаляйте эту строку из массива (если она там существует). В конце концов, вам просто нужно зациклить свой массив, чтобы получить выбранные строки
Обновлено:
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)
}
}
}
спасибо за ваши комментарии, пожалуйста, если вы объясните на примере. спасибо, чандан
@ChandanBera Я отредактировал свой ответ, указав для этого быстрый пример Kotlin. Не проверял, но должно работать
У вас есть флажки в ListView/RecyclerView?