В вашем адаптере вы можете установить тег для каждого представления в вашем RecyclerView в onBindViewHolder, а в прослушивателе щелчков вы можете получить тег и действовать в соответствии с тем, какой это тег.
Вы можете сделать Ваш адаптер RecyclerView расширяет View.onClickListener
override fun onBindViewHolder(holder: OpportunityViewHolder, position: Int) {
// Differentiate between items by having a base class that you implement for your different items
val item = getItem(position)
item.tag = when(item) {
is ThisThing -> "thisThing"
is ThatThing -> "thatThing"
is AnotherThing -> "anotherThing"
}
}
override fun onClick(v: View) {
when(v.tag) {
"thisThing" -> // do something
"thatThing" -> // something else...
}
Конечно, вы, возможно, захотите использовать перечисление для возможностей тега или постоянных значений, или даже использовать имена классов
enum class Tag {
THIS_THING, THAT_THING...
}
companion object {
private const val THIS_THING = "THIS_THING"
...
}
// Inside classes
companion object {
val name = ThisThing::class.simpleName
...
}