我尝试从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()));
}
}
但它对我不起作用。
我尝试使用this question中的代码,但据我了解,Kotlin无法迭代SparseBooleanArray
。
那么,你能帮我查一下ListView的ids吗?
我应该以某种方式创建一个扩展方法来迭代SparseBooleanArray
?
或者,也许还有其他方式?
答案 0 :(得分:3)
您可以使用以下代码遍历数组:
for (i in 0..a.size()-1) {
//access to a[i]
}
2017年3月27日编辑:
您也可以使用等效的Collection<*>.indices
for (i in a.indices) {
//access to a[i]
}
答案 1 :(得分:1)
据我所知,Kotlin无法迭代
SparseBooleanArray
Kotlin的for
可以迭代任何内容,如果它提供iterator()
,无论是方法还是扩展函数。以下是details。
您可以将SparseBooleanArray#iterator
实现为扩展功能,并让代码正常工作。