Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin抽象泛型视图持有者的类需要一个类型参数_Android_Android Recyclerview_Kotlin - Fatal编程技术网

Android Kotlin抽象泛型视图持有者的类需要一个类型参数

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

我正在尝试创建具有以下内容的RecyclerView.Adapter:


视图持有者-提供了抽象父对象和一个子对象
抽象类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>>