如何从Kotlin中的对象List的属性中填写CharSequence数组?

时间:2018-05-31 08:54:15

标签: android kotlin

我希望同时获取 myList MSetting 名称 _id ,并填写条目 entryValues 与他们,我怎么能在Kotlin做?

目前,我必须使用代码A来完成它,但它太复杂了!

代码A

for(aMetting in myList){
   entries.add(aMetting.name)
   entriesValue.add(aMetting._id)
}

来源

var entries = arrayOf<CharSequence>()
var entryValues = arrayOf<CharSequence>()


var myList: List<MSetting>

data class MSetting (
        var _id: Long,  
        var name: String,
        var createdDate: Long,
        var description: String
)

3 个答案:

答案 0 :(得分:1)

我不知道您是否真的需要将_idname放在两个不同的数组中。但是,为此,您可以使用forEach声明:

myList.forEach { it -> entries.add(it.name); entriesValue.add(it._id) }

但是如果你想放弃_idname关系。您可以使用Pair结构。

val entries = mutableListOf<Pair<CharSequence, CharSequence>>()
myList.forEach { it -> entries.add(Pair(it._id, it.name)) }

使用Map是另一种选择,但如果您拥有密钥并希望查找值,则建议使用此选项。迭代所有条目,没有任何有意义的差异。

答案 1 :(得分:0)

我认为不是使用单独的数组,而是可以将它放在Map

val settingMap = hashMapOf ( name to id )val map = mutableMapOf<Integer, String>()

for((key, value) in settingMap){
    println(value)
}

希望它有所帮助。

答案 2 :(得分:0)

import java.util.*

var myList = ArrayList<MSetting>()

var entryMap = HashMap<Long, String>()

data class MSetting (
        var _id: Long,
        var name: String,
        var createdDate: Long,
        var description: String
)

fun main(args: Array<String>) {
    myList.forEach { entryMap.put(it._id, it.name) }
}