Вот пример для вашего адаптера, но есть и другие, вам нужны разные держатели и макеты, и вам нужно будет раздувать разные макеты, когда вы обнаружите разные типы представлений и т. Д. ...
в адаптере
companion object{
private val VIEW_TYPE_CITY = 0
private val VIEW_TYPE_OTHER = 1
}
override fun getItemViewType(position: Int) :Int {
return if (json[position].CityEvent == CITY_TYPE ){
VIEW_TYPE_CITY
}else{
VIEW_TYPE_OTHER
}
}
Надеюсь, это поможет, но вам, возможно, придется задать больше вопросов