I\'m trying to create a RecyclerView.Adapter with the following:
abstract class Base
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 : 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" ;)