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

View 持有人-提供抽象 parent 和一个儿子

abstract class BaseSettingsViewHolder<T>(var viewDataBinding :
ViewDataBinding) : RecyclerView.ViewHolder(viewDataBinding.root) {

   abstract fun onBind(data: T, presenter: ISettingsPresenter, position: Int)
}
class SettingsTitleViewHolder(viewDataBinding: ViewDataBinding) : BaseSettingsViewHolder<TitleData>(viewDataBinding) {

    override fun onBind(data: TitleData, presenter: ISettingsPresenter, position: Int) {
        viewDataBinding.setVariable(BR.titleData, data)
        viewDataBinding.setVariable(BR.itemPosition, position)
        viewDataBinding.setVariable(BR.settingsPresenter, presenter)
        viewDataBinding.executePendingBindings()
    }

}

当尝试声明适配器时:
class SettingsAdapter(var context: Context, var presenter: ISettingsPresenter) : RecyclerView.Adapter<BaseSettingsViewHolder>() {

我在以下位置收到“类期望的一种类型参数”的编译错误:
RecyclerView.Adapter<BaseSettingsViewHolder>

感谢帮助!

最佳答案

1-如果始终使用 SettingTitleViewHolder

RecyclerView.Adapter<SettingTitleViewHolder>

2-如果要使用扩展了 BaseSettingViewHolder 的任何类;
RecyclerView.Adapter<BaseSettingsViewHolder<*>>

3-使用任何对象类型
RecyclerView.Adapter<BaseSettingsViewHolder<Any>>

4-对适配器类使用扩展类型参数
class SettingsMenuAdapter<T>:RecyclerView.Adapter<T> where : BaseSettingViewHolder<*>

5-定义抽象类类型参数。
abstract class BaseSettingsViewHolder<out T> RecyclerView.Adapter<BaseSettingsViewHolder<Any>>

7-阅读该文章=>
"Generics in Kotlin";)

10-07 19:19
查看更多