由于泛型,我无法将适配器传递给适配器包装器类。这是我如何实例化它
val a = MyAdapter()
val b = AdAdapter(a)
此代码导致错误
Type mismatch: inferred type is MyAdapter but RecyclerView.Adapter
<in RecyclerView.ViewHolder> was expected
这是我的适配器
class MyAdapter: RecyclerView.Adapter<MyAdapter.VH>() {
//Some Code Here
class VH(itemView: View): RecyclerView.ViewHolder(itemView) {}
}
这是Adadapter
class AdAdapter(private val originalAdapter:
RecyclerView.Adapter<in RecyclerView.ViewHolder>)
: RecyclerView.Adapter<RecyclerView.ViewHolder>() {
//Some Code
}
答案 0 :(得分:0)
如https://kotlinlang.org/docs/reference/generics.html#use-site-variance-type-projections中所述,
Array<in String>
对应于JavaArray<? super String>
,即您可以将CharSequence
数组或Object
数组传递给fill()
函数
因此,在您的情况下,您需要MyAdapter
成为RecyclerView.Adapter<? super RecyclerView.ViewHolder>
并且它不是,因为MyAdapter.VH
并不满足约束。