- Добавьте переменную viewType в ваш класс данных.В вашем случае вы могли бы использовать «Button» и «Image».
- Установить значение viewType первого объекта как «Button»
- Использовать метод Multiple ViewHolder для реализации Recyclerview
Переопределить getItemViewType
override fun getItemViewType(position: Int): Int {
return when (orders[position].viewType) {
ViewType.Button-> 1
ViewType.Image-> 2
else -> 1
}
}
onCreateViewHolder
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val viewHolder: RecyclerView.ViewHolder
when (viewType) {
1 -> {
val buttonBinding = DataBindingUtil.inflate<ItemButtonBinding>(
LayoutInflater.from(parent.context),
R.layout.item_button, parent, false
)
viewHolder = ButtonViewHolder(buttonBinding .root)
}
2 -> {
val imageBinding = DataBindingUtil.inflate<ItemImageBinding>(
LayoutInflater.from(parent.context),
R.layout.item_image, parent, false)
viewHolder = ImageViewHolder(imageBinding .root)
}
else -> {
val imageBinding = DataBindingUtil.inflate<ItemImageBinding>(
LayoutInflater.from(parent.context),
R.layout.item_image, parent, false)
viewHolder = ImageViewHolder(imageBinding .root)
}
}
return viewHolder
}
onBindViewHolder
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (holder.itemViewType) {
1 -> {
val buttonViewHolder = holder as ButtonViewHolder
configureButtonViewHolder(buttonViewHolder , position)
}
2 -> {
val imageViewHolder = holder as ImageViewHolder
configureImageViewHolder(imageViewHolder , position)
}
else -> {
val imageViewHolder = holder as ImageViewHolder
configureImageViewHolder(imageViewHolder , position)
}
}
}
Установите OnClickListener
на Кнопку ItemView в Класс кнопки ViewHolder и поместите коды намерений средства выбора изображений внутри OnClickListener
См. ответ