Ошибка "несоответствие типов" 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 шт):
Вам нужен одномерный список, а вы создали двумерный. Итак, у вас есть класс, который содержит в себе изменяемый список имен 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))
}