Проблема Kotlin «Один аргумент типа ожидается для класса ExpandableRecyclerAdapter» - PullRequest
0 голосов
/ 19 января 2019

Проблемы с 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 в <...> подчеркнут с ошибкой:

Один аргумент типа ожидается для класса ExpandableRecyclerAdapter

Однако, если я объявил мой класс ViewHolder как статический (путем удаления inner), ошибка исчезнет, ​​но для меня это неприемлемо.

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

Ценю помощь!

1 Ответ

0 голосов
/ 19 января 2019

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

Это означает, что вы не можете ссылаться на универсальный ExpandableRecyclerAdapter.ViewHolder, вы должны также указать границы, в которых находится внешний класс. Изменение на ExpandableRecyclerAdapter<T>.ViewHolder должно решить проблему.

...