MutableList не добавляет новые значения Kotlin - PullRequest
0 голосов
/ 21 декабря 2018

Я получаю список путей к файлам из определенной папки, но когда я пытаюсь добавить его в свой изменяемый список, список остается пустым.

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 ]

0 голосов
/ 21 декабря 2018

Попробуйте это:

var filePath: MutableList<String> = arrayListOf()
0 голосов
/ 21 декабря 2018

Вы объявили свой 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
    }
}
0 голосов
/ 21 декабря 2018

список остается пустым.

Нет, список null:

var filePath :MutableList<String> ?=null

Попробуйте присвоить ему значение:

var filePath: MutableList<String> = mutableListOf()
...