Вы можете добавить целочисленное свойство 'view type' к вашему Movie
классу данных
data class Movie(
val title: String,
val image: String,
val date: String,
val viewType: Int = 0
)
, а затем к вашему getItemViewType
вернуть тип представления из вашего класса данных Movie
override fun getItemViewType(position: Int): Int {
val movie = getItemByPosition(position) as Movie
return movie.viewType
}
на вашем onCreateViewHolder
, вы можете использовать это для определения типа вашего представления
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder {
when (viewType) {
0 -> {
val v = inflater.inflate(R.layout. layout_list, parent, false)
return RecyclerOneViewHolder(v)
}
else -> {
val v = inflater.inflate(R.layout. layout_list2, parent, false)
return RecyclerTwoViewHolder(v)
}
}
}
, наконец, на вашем onBindViewHolder
вы можете сделать это
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val position = holder.adapterPosition
when (getItemViewType(position)) {
0 -> {
holder as RecyclerOneViewHolder
// set view type 1 content here
}
else -> {
holder as RecyclerTwoViewHolder
// set view type 2 content here
}
}