如何通过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
作为扩展函数,让你的代码工作。