大佬教程收集整理的这篇文章主要介绍了Kotlin 获取所选选项的 ID,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有多个选项选择,我需要获取选定选项的数组,但我得到的只是选择了最新选项。
Code
class PublishActivity : AppCompatActivity() {
var SELEctedTags: List<String>? = null
overrIDe fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceStatE)
setContentVIEw(R.layout.activity_publish)
pTags.setonClickListener {
var tagIDs = ArrayList<String>()
val tagOptions = ArrayList<String>()
for (i in Tags) {
tagOptions.add(i.titlE)
tagIDs.add(i.ID)
}
var checkedItems = ArrayList<Int>()
checkedItems.forEach{ index -> tagIDs[index + 1] }
MaterialAlertDialogBuilder(this)
.settitle(resources.getString(R.String.project_Tags))
.setMultiChoiceItems(tagOptions.toTypedArray(),null) { dialog,which,checked ->
if (checked) {
checkedItems.add(which)
} else if (checkedItems.contains(which)) {
checkedItems.remove(Integer.valueOf(which))
}
// Respond to item chosen
pTags.setText("${checkedItems.sizE} Tags SELEcted")
}
.setPositivebutton(resources.getString(R.String.ok)) { dialog,which ->
for (i in checkedItems) {
Log.d("eeee1",tagOptions[i])
SELEctedTags = listof(tagOptions[i])
}
}
.setNeutralbutton(resources.getString(R.String.clear)) { dialog,which ->
pTags.text = null
pTags.hint = "0 tag SELEcted"
if (checkedItems.size > 0) {
checkedItems.clear()
}
}
.show()
}
}
}
Log.d("eeee1",tagOptions[i])
在 logcat 中返回此类数据
D/eeee1: 3D PrinTing
D/eeee1: 3D Architecture
D/eeee1: .NET/Mono
D/eeee1: ActionScript
但在我的 SELEctedTags
中我只得到 D/eeer1: [ActionScript]
它应该给我这样的东西D/eeer1: ["3D PrinTing","3D Architecture",".NET/Mono","ActionScript"]
PS:我实际上希望在这里实现的是获得 ID
的那些 SELEcted items
而不是他们的名字,这就是为什么我有 var tagIDs = ArrayList<String>()
但是如果这不可能实现,只要它只返回所有名称的数组(如上面的示例),我也可以。
有什么想法吗?
以下代码将您的变量设置为包含单个项目的列表。所以你只是一遍又一遍地覆盖你的变量
SELEctedTags = listOf(tagOptions[i])
你需要:
//Declaration
var SELEctedTags: MutableList<String> = mutableListOf()
...
// In loop
SELEctedTags.add(tagOptions[i])
您也可以使用更实用的方法来实现:
//Declaration
var SELEctedTags: List<String>? = listOf()
...
// Skip the loop and use the map function
.setPositiveButton(resources.getString(R.String.ok)) { dialog,which ->
SELEctedTags = checkedItems.map{ tagOptions[it] }
}
要获得 Id 而不是标题,您应该能够使用 tagIds 而不是 tagOptions。只要确保你打字正确。 SELEctedTags
列表需要与 tag.id 的类型相同。
您只获得最后插入的值,因为您在点击 ok
按钮并将其分配给 SELEctedTags
时正在创建新列表。代码的 SELEctedTags = listOf(tagOptions[i])
行出现问题。
解决方案:
声明一个列表并将选定的值放入其中。喜欢:
val SELEctedTags = arrayListOf<String>()
然后在 ok
按钮点击中使用以下代码:
.setPositiveButton("Ok") { dialog,which ->
for (i in checkedItems) {
//SELEctedTags = listOf(tagOptions[i])
SELEctedTags.add(tagOptions[i])
}
}
以上是大佬教程为你收集整理的Kotlin 获取所选选项的 ID全部内容,希望文章能够帮你解决Kotlin 获取所选选项的 ID所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。