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
感谢帮助!
答案 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
应该可以解决问题。