MutableList没有添加新值Kotlin

时间:2018-12-21 11:59:59

标签: android kotlin mutablelist

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

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的新手,请帮助!

3 个答案:

答案 0 :(得分:9)

  

列表仍然为空。

否,列表为null

var filePath :MutableList<String> ?=null

尝试为其分配一个值:

var filePath: MutableList<String> = mutableListOf()

答案 1 :(得分:2)

尝试一下:

var filePath: MutableList<String> = arrayListOf()

答案 2 :(得分:1)

您声明了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
    }
}
相关问题