【问题标题】:Kotlin issue “One type argument expected for class ExpandableRecyclerAdapter”Kotlin 问题“ExpandableRecyclerAdapter 类需要一个类型参数”
【发布时间】:2019-01-19 13:08:33
【问题描述】:

RecyclerAdapter ViewHolder 出现问题

abstract class ExpandableRecyclerAdapter<T : ExpandableRecyclerAdapter.ListItem>(private val context: Context) : RecyclerView.Adapter<ExpandableRecyclerAdapter.ViewHolder>() {
    protected var allItems = ArrayList<T>()

    ...

    open inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
    open class ListItem(val itemType: Int = 0)  
}

&lt;...&gt; 中的ExpandableRecyclerAdapter 带有错误下划线:

ExpandableRecyclerAdapter 类需要一个类型参数

但是,如果我将 ViewHolder 类声明为静态(通过删除内部),错误就会消失,但这对我来说是不可接受的。

像这里这样的建议不会有帮助:Kotlin One type argument expected for class for abstract generic view holder

感谢您的帮助!

【问题讨论】:

    标签: java android-studio generics kotlin android-recyclerview


    【解决方案1】:

    Kotlin 不允许在不提供泛型的情况下指定泛型类型,除非您指的是类的非实例成员。 (静态内部类,::class,伴随方法)。由于ViewHolder 是一个内部类,它的身份取决于它的外部类的确切规范,当谈到类型本身时。

    这意味着您不能引用泛型ExpandableRecyclerAdapter.ViewHolder,您还必须指定外部类所在的边界。将其更改为 ExpandableRecyclerAdapter&lt;T&gt;.ViewHolder 应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-30
      • 2015-12-16
      • 2021-10-24
      • 1970-01-01
      • 2021-06-12
      • 2018-02-09
      • 1970-01-01
      • 2017-06-05
      相关资源
      最近更新 更多