从父项到Grantchild项的类型检查

时间:2019-07-08 08:43:30

标签: java android kotlin

我正在将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))

0 个答案:

没有答案