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()
Другие вопросы по тегам