MutableList 不添加新值 Kotlin

MutableList not adding new values Kotlin

我正在从特定文件夹中获取文件路径列表,但是当我尝试将其添加到我的可变列表中时,该列表仍然是空的。

var filePath: MutableList<String>? = null
val path = File(getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).path, "BacFo Camera")
if (path.exists()) {
    for(i in path.list().iterator()){
        filePath?.add("" + path.toString() + "/" + i)  //here i=file name
    }
}

在 运行 调试器之后,值确实出现在变量 i 中,但可变列表如何保持为空。我是 Kotlin 的新手,请帮忙!!

the list remains empty.

不,列表是null:

var filePath :MutableList<String> ?=null

尝试为其分配一个值:

var filePath: MutableList<String> = mutableListOf()

试试这个:

var filePath: MutableList<String> = arrayListOf()

您声明了您的 MutableList,但使用 null 对其进行了初始化。所以这个变量是保留的,但没有用列表初始化。

当您尝试向列表中添加一个值时,您使用的 safe call ?. 仅在值(您的列表)不是 null 时才执行。但实际上是null调用没有执行。

您应该初始化您的列表,例如ArrayList.

var filePath: MutableList<String>? = ArrayList<String>()

因为你现在总是初始化你的列表,你甚至可以使用 val 而不是 var 并且可以摆脱保存调用:

val filePath: MutableList<String>? = ArrayList<String>()
val path = File(getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).path, "BacFo Camera")
if (path.exists()) {
    for(i in path.list().iterator()){
        filePath.add("" + path.toString() + "/" + i)  //here i=file name
    }
}