Как получить проверенные идентификаторы в ListView через Kotlin?

Я пытаюсь получить проверенные элементы из списка ListView:

val lvPlayers = findViewById(R.id.ListViewAllPlayers) as ListView; lvPlayers.choiceMode = ListView.CHOICE_MODE_MULTIPLE; lvPlayers.adapter = adapter lvPlayers.setOnItemClickListener { adapterView: AdapterView<*>, view1: View, i: Int, l: Long -> Toast.makeText(applicationContext,lvPlayers.checkedItemCount.toString(), Toast.LENGTH_SHORT).show(); var checked = lvPlayers.checkedItemIds; SharedData.SelectedPlayers.clear(); for (ch in checked) { SharedData.SelectedPlayers.add(players.get(ch.toInt())); } } 

Но это не работает для меня.
Я попытался использовать код из этого вопроса , но, как я понимаю, Котлин не может перебирать SparseBooleanArray .

Итак, можете ли вы помочь мне получить проверенные идентификаторы ListView?
Должен ли я каким-то образом создать метод расширения для итерации по SparseBooleanArray ? Или, может быть, каким-то другим способом?

Вы можете перебирать массив по его индексу с помощью:

 for (i in 0..a.size()-1) { //access to a[i] } 

См. Также диапазоны и для цикла

Отредактировано 27 марта 2017 года:

Вы можете также использовать индексы Collection <*>., Которые эквивалентны

 for (i in a.indices) { //access to a[i] } 

я понимаю, что Котлин не может перебирать SparseBooleanArray

Kotlin's can может перебирать что угодно, если он предоставляет iterator() , будь то метод или функция расширения. Вот подробности .

Вы можете реализовать SparseBooleanArray#iterator как функцию расширения и работать с кодом.

Intereting Posts