1

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

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
    }
}

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

4

3 回答 3

11

列表仍然是空的。

不,清单是null

var filePath :MutableList<String> ?=null

尝试为它分配一个值:

var filePath: MutableList<String> = mutableListOf()
于 2018-12-21T12:02:40.273 回答
3

您声明了 MutableList 但使用null. 所以变量是保留的,但没有用列表初始化。

当您尝试将值添加到列表时,您会使用仅在值(您的列表)不是时才执行的安全调用 。但实际上它是给调用不执行的。?.nullnull

您应该初始化您的列表,例如使用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
    }
}
于 2018-12-21T13:02:01.643 回答
2

试试这个:

var filePath: MutableList<String> = arrayListOf()
于 2018-12-21T12:08:49.917 回答