Kotlin问题“类ExpandableRecyclerAdapter需要一种类型参数”

时间:2019-01-19 13:08:33

标签: java android-studio generics kotlin recycler-adapter

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)  
}
<...>中的

ExpandableRecyclerAdapter下划线带有错误:

  

类ExpandableRecyclerAdapter

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

像这样的建议将无济于事:Kotlin One type argument expected for class for abstract generic view holder

感谢帮助!

1 个答案:

答案 0 :(得分:2)

除非您引用的是非实例成员,否则Kotlin不允许在不提供泛型的情况下指定泛型类型。 (静态内部类,var colors = [ "rgb(255,0,0)", "rgb(255,255,0)", "rgb(0,255,0)", "rgb(0,255,255)", "rgb(0,0,255)", "rgb(255,0,255)" ] ,伴随方法)。由于::class是一个内部类,因此在讨论类型本身时,其身份取决于其外部类的确切说明。

这意味着您不能引用泛型ViewHolder,必须指定外部类所在的范围。将其更改为ExpandableRecyclerAdapter.ViewHolder应该可以解决问题。