MutableList не добавляет новые значения 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, пожалуйста, помогите!
3 ответа
Вы объявили свой MutableList, но инициализировали его null
, Таким образом, переменная зарезервирована, но не инициализирована списком.
Когда вы пытаетесь добавить значение в список, вы используете безопасный вызов ?.
выполняется только тогда, когда значение (ваш список) не 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
}
}
список остается пустым.
Нет, список null
:
var filePath :MutableList<String> ?=null
Попробуйте присвоить ему значение:
var filePath: MutableList<String> = mutableListOf()
Попробуй это:
var filePath: MutableList<String> = arrayListOf()