我正在从特定文件夹中获取文件路径列表,但是当我尝试将其添加到可变列表中时,该列表仍然为空。
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的新手,请帮助!
答案 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
}
}