Kotlin One type argument expected for class for abstract generic view holder

You should specify the type argument for the BaseSettingsViewHolder in the RecyclerView.Adapter<BaseSettingsViewHolder> type.

Kotlin, unlike Java, does not have the raw types, so you cannot simply omit the type arguments.

The closest concept to raw types is star-projected types: use BaseSettingsViewHolder<*> in RecyclerView.Adapter<BaseSettingsViewHolder<*>>, this will mean that the type argument for BaseSettingsViewHolder is unknown.


1- If you use always SettingTitleViewHolder;

RecyclerView.Adapter<SettingTitleViewHolder>

2- If you want to use any class which extended BaseSettingViewHolder;

RecyclerView.Adapter<BaseSettingsViewHolder<*>>

3- Use Any Object Type

RecyclerView.Adapter<BaseSettingsViewHolder<Any>>

4- Use extended type parameter for adapter class

class SettingsMenuAdapter<T>:RecyclerView.Adapter<T> where T : BaseSettingViewHolder<*>

5- Define out for abstract class type parameter.

abstract class BaseSettingsViewHolder<out T> RecyclerView.Adapter<BaseSettingsViewHolder<Any>>

7- Read that article => "Generics in Kotlin" ;)