我正在将recyclerview
用于这样的商品类型(以区分商品类型)
class MainItem(label: String)
class ChildItem(override label: String) : MainItem(label)
class GrantChildItem(override label: String) : ChildItem(label)
我的recyclerview
个项目是List<MainItem>
,当用户单击某个项目时,我在绑定视图上使用了侦听器。
AdapterClass
class Adapter(onCLickListener: ItemOnClick) : RecyclerView.Adapter<Viewholder>() {
.....
override fun onBindViewHolder(holder: Viewholder, pos: Int) {
....
holder.itemView.setOnClickListener { onClickListener.onClick(pos) }
....
}
.....
}
这是我的ItemOnClick界面
interface ItemOnClick {
fun onClick(pos: Int)
}
问题是我无法检查项目类型是GrantChildItem还是ParentItem on onClick
函数。
fun onClick(pos: Int) {
if (items[pos] is GrantChildItem) // throws error incompatible type
}
尝试比较Java反射类仍然会引发错误
if (item[pos]::class.java.isInstance(GrantChildItem::class.java))