Android Kotlin抽象泛型视图持有者的类需要一个类型参数
我正在尝试创建具有以下内容的RecyclerView.Adapter:Android Kotlin抽象泛型视图持有者的类需要一个类型参数,android,android-recyclerview,kotlin,Android,Android Recyclerview,Kotlin,我正在尝试创建具有以下内容的RecyclerView.Adapter: 视图持有者-提供了抽象父对象和一个子对象 抽象类BaseSettingsView文件夹(var VIEWDATABINING: ViewDataBinding):RecyclerView.ViewHolder(ViewDataBinding.root){ 抽象乐趣绑定(数据:T,演示者:ISettingsPresenter,位置:Int) } class SettingsTitleViewHolder(viewData
视图持有者-提供了抽象父对象和一个子对象
抽象类BaseSettingsView文件夹(var VIEWDATABINING:
ViewDataBinding):RecyclerView.ViewHolder(ViewDataBinding.root){
抽象乐趣绑定(数据:T,演示者:ISettingsPresenter,位置:Int)
}
class SettingsTitleViewHolder(viewDataBinding:viewDataBinding):BaseSettingsViewHolder(viewDataBinding){
覆盖绑定(数据:标题数据,演示者:ISettingsPresenter,位置:Int){
viewDataBinding.setVariable(BR.titleData,数据)
viewDataBinding.setVariable(BR.itemPosition,position)
viewDataBinding.setVariable(BR.settingsPresenter,presenter)
viewDataBinding.executePendingBindings()
}
}
在尝试声明适配器时:
class SettingsAdapter(var context: Context, var presenter: ISettingsPresenter) : RecyclerView.Adapter<BaseSettingsViewHolder>() {
class-SettingsAdapter(var-context:context,var-presenter:ISettingsPresenter):RecyclerView.Adapter(){
我在上得到“类需要一个类型参数”编译错误:
RecyclerView.Adapter<BaseSettingsViewHolder>
RecyclerView.Adapter
感谢您的帮助!您应该在
RecyclerView.Adapter
类型中为basesetingsviewholder
指定类型参数
与Java不同,Kotlin没有原始类型,因此不能简单地忽略类型参数
与原始类型最接近的概念是:在
RecyclerView.Adapter
中使用BaseSettingsViewHolder
,这意味着BaseSettingsViewHolder
的类型参数未知。1-如果始终使用SettingTitleWiholder
RecyclerView.Adapter<SettingTitleViewHolder>
RecyclerView.Adapter<BaseSettingsViewHolder<*>>
RecyclerView.Adapter
2-如果要使用扩展了BaseSettingViewHolder的任何类
RecyclerView.Adapter<SettingTitleViewHolder>
RecyclerView.Adapter<BaseSettingsViewHolder<*>>
RecyclerView.Adapter
3-使用任何对象类型
RecyclerView.Adapter<BaseSettingsViewHolder<Any>>
RecyclerView.Adapter感谢您的快速回答,但我已经尝试过了,在onBindViewHolder中调用holder.onBind(dataList[position],presenter,position)时出现错误。我正在退出投影类型“BaseSettingsViewHolder”禁止使用“public abstract fun onBind”(数据:T,演示者:ISettingsPresenter,位置:Int):BaseSettingsViewHolder中定义的单位“那么,您可以提供一些具体类型吗?RecyclerView.Adapter
您必须从RecyclerView Adapter ViewHolder扩展标题数据。
class SettingsMenuAdapter<T>:RecyclerView.Adapter<T> where : BaseSettingViewHolder<*>
abstract class BaseSettingsViewHolder<out T> RecyclerView.Adapter<BaseSettingsViewHolder<Any>>