Я использую 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))