Возникли проблемы с RecyclerAdapter ViewHolder.
abstract class ExpandableRecyclerAdapter<T : ExpandableRecyclerAdapter.ListItem>(private val context: Context) : RecyclerView.Adapter<ExpandableRecyclerAdapter.ViewHolder>() {
protected var allItems = ArrayList<T>()
...
open inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
open class ListItem(val itemType: Int = 0)
}
ExpandableRecyclerAdapter в <...> подчеркнут с ошибкой:
One type argument expected for class ExpandableRecyclerAdapter< T : ExpandableRecyclerAdapter.ListItem>
Однако, если я объявлю свой класс ViewHolder статическим (путем удаления внутреннего), ошибка исчезнет, но для меня это неприемлемо.
Советы вроде этого не помогут: Kotlin Один аргумент типа ожидается для класса для держателя абстрактного универсального представления
Цените помощь!




Kotlin не позволяет указывать универсальные типы без предоставления дженериков, если только вы не ссылаетесь на член класса, не являющийся экземпляром. (статические внутренние классы, ::class, сопутствующие методы). Поскольку ViewHolder является внутренним классом, его идентичность зависит от точной спецификации его внешнего класса, когда речь идет о самом типе.
Это означает, что вы не можете ссылаться на универсальный ExpandableRecyclerAdapter.ViewHolder, вы также должны указать границы, в которых находится внешний класс. Изменение его на ExpandableRecyclerAdapter<T>.ViewHolder должно решить проблему.