如何通过Kotlin在ListView中检查ID?

我试图从我的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())); } } 

但是这对我不起作用。
我试图使用这个问题的代码,但据我所知,Kotlin不能遍历SparseBooleanArray

那么,你能帮我取得ListView的检查ID吗?
我应该以某种方式创建一个扩展方法迭代SparseBooleanArray ? 或者,也许有其他的方式?

您可以使用以下索引遍历数组的索引:

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

另请参阅范围和for循环

2017年3月27日编辑:

您也可以使用等效的Collection <*>。索引

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

我明白,Kotlin无法遍历SparseBooleanArray

如果它提供了iterator() ,那么Kotlin的for可以迭代任何东西,不管它是方法还是扩展函数。 这里是细节 。

你可以实现SparseBooleanArray#iterator作为扩展函数,让你的代码工作。