程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Kotlin 获取所选选项的 ID大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Kotlin 获取所选选项的 ID?

开发过程中遇到Kotlin 获取所选选项的 ID的问题如何解决?下面主要结合日常开发的经验,给出你关于Kotlin 获取所选选项的 ID的解决方法建议,希望对你解决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,请注明来意。
标签: