从资源字符串数组创建ArrayList <string>

时间:2018-01-11 12:56:00

标签: android kotlin

我已将ArrayList声明为

var otherSeriesList = ArrayList<String>()

尝试通过以下方式从资源获取数据,

otherSeriesList = ArrayList<String>(Arrays.asList(resources.getStringArray(R.array.get_other_series)))

但我收到了错误。请看图像 - enter image description here

我应该如何从资源字符串数组创建ArrayList?

5 个答案:

答案 0 :(得分:2)

只需使用ArrayList(resources.getStringArray( ... ).toMutableList())

如果您不需要在代码中使用ArrayList,那么您可以将属性类型更改为MutableList<String>并致电resources.getStringArray( ... ).toMutableList()

或者您可以在阵列上使用点差运算符,并通过调用ArrayList

创建arrayListOf(*context.resources.getStringArray())

答案 1 :(得分:2)

简单就是这样 -

otherSeriesList = ArrayList<String>(Arrays.asList(*resources.getStringArray(R.array.get_other_series)))

*会将数组作为vararg传递

答案 2 :(得分:1)

您可以将其声明为MutableList()。在此之前也将StringArray强制转换为String

var otherSeriesList: MutableList<String> = Arrays.asList(resources.getStringArray(R.array.get_other_series).toString())

或者你可以这样做,

var otherSeriesList: MutableList<String> = resources.getStringArray(R.array.get_other_series).toMutableList()

答案 3 :(得分:0)

如果您有阵列,只需在其上调用toList()

val arr = arrayOf(1, 2)
val list = arr.toList()

或者,也可以使用toMutableList()扩展名。

注意您可以像这样在Kotlin中声明列表:

val list = listOf<String>(1, 2)

要确保获得ArrayList,请使用arrayListOf()

答案 4 :(得分:0)

您可以创建 extension 功能

 private fun Array<String>.getAsArrayList(): ArrayList<String> {
    val list = ArrayList<String>()
    this.forEach { it->list.add(it) }
    return list
}

并像这样称呼它

val  list = resources.getStringArray(R.array.array).getAsArrayList()