I want to make RecyclerView with multiple view types. Like in this topic: link.
I understand essential of this approach is method getItemViewType(position: Int): Int{}.
This viewType tells onCreateViewHolder(parent: ViewGroup, viewType: Int) which one of two holder to create. In a test project everything works well.
But in this particular RecyclerView Adapter, method onCreateViewHolder always get zero. Even if I set viewType hard way like this override.
fun getItemViewType(position: Int): Int { return 100 }
I'll be glad any clue. This is my code:
class OrdersAdapter(val iAbsListFragment: IAbsListFragment,
val listItemsLD: LiveData<Result<List<Order>>>
) : RecyclerView.Adapter<OrderViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OrderViewHolder {
viewType
return OrderViewHolder(
LayoutInflater.from(parent.context)
.inflate(R.layout.card_order, parent, false), iAbsListFragment
)
}
override fun getItemViewType(position: Int): Int { return 100 }
override fun getItemCount(): Int {
return if (listItemsLD.value is Result.Success) {
(listItemsLD.value as Result.Success<List<Order>>).data.size
} else {
0
}
}
override fun onBindViewHolder(holder: OrderViewHolder, position: Int) {
if (listItemsLD.value is Result.Success) {
val order = (listItemsLD.value as Result.Success<List<Order>>).data[position]
holder.bindTo(order)
}
}
}