Котлин не позволяет создавать объекты типа, который был идентифицирован в параметрах типа (в отличие от C # can).
Так что в вашем случае вы можете оставить абстрактный класс без onCreateViewHolder
реализации метода. Или вы можете добавить другой абстрактный метод и вызвать его в onCreateViewHolder
.
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T {
val layout = LayoutInflater.from(parent.context).inflate(layoutResource, parent, false)
layout.setOnClickListener(onClickListener)
return createHolderInstance(layout)
}
abstract fun createHolderInstance(layout: View): T
Таким образом, в дочерних классах должно быть меньше кода. Например:
class UsersAdapter(...) : BaseAdapter<UserHolder>(...) {
override fun createHolderInstance(layout: View) = UserHolder(layout)
}