Ошибка "несоответствие типов" Kotlin

Не пойму как исправить и почему так происходит следующую ошибку:

Type mismatch. Required: TestList Found: String

В отдельном классе лежит класс данных TestList с одним параметром name строкового массива

data class TestList (val names: ArrayList<String>)

Далее в MainActivity я создаю recList список из TestList

val recList = ArrayList<TestList>()

Далее мне нужно заполнить этот массив строковыми данными:

for((key) in data.legends.all){
     recList.add(key)
}

Ну и собственно в этом месте я получаю данную ошибку, почему так происходит ? Как это исправить ?


Ответы (1 шт):

Автор решения: Vadik

Вам нужен одномерный список, а вы создали двумерный. Итак, у вас есть класс, который содержит в себе изменяемый список имен names:

data class TestList(val names: MutableList<String>)

Чтобы создать экземпляр этого класса, нужно просто вызвать конструктор и передать туда пустой список:

val list = TestList(names = mutableListOf())

Далее, пополнить names можно следующим образом:

for((key) in data.legends.all){
    list.names.add(key)
}

UPD:

Выяснилось, что TestList на самом деле должен называться TestItem и содержать в себе name, а не names:

data class TestItem(val name: String)

Если вам непринципиально, чтобы реализация списка была именно ArrayList, то изменяемый список в Котлин лучше создавать таким образом:

val list = mutableListOf<TestItem>()

А в цикле просто создаем новый экземпляр TestItem и добавляем его в список:

for((key) in data.legends.all){
    list.add(TestItem(key))
}
→ Ссылка