У меня есть список продуктов, у каждого продукта есть productType внутри, который может быть 1 или 2, в зависимости от этого числа, я хочу показать в моем утилитаре просмотра все productTypes с 1 с названием заголовка Drinks и productType с 2 с название заголовка Food
Я сделал это
private val ITEM_VIEW_TYPE_HEADER = 0
private val ITEM_VIEW_TYPE_PRODUCT = 1
class StoreAdapter(val context: Context) :
RecyclerView.Adapter<BaseViewHolder<*>>() {
var productList = mutableListOf<Product>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<*> {
return when(viewType){
ITEM_VIEW_TYPE_HEADER -> {
val view = LayoutInflater.from(context).inflate(R.layout.header,parent,false)
HeaderViewHolder(view)
}
ITEM_VIEW_TYPE_PRODUCT -> {
val view = LayoutInflater.from(context).inflate(R.layout.menu_row,parent,false)
StoreViewHolder(view)
}
else -> throw ClassCastException("Unknown viewType $viewType")
}
}
inner class HeaderViewHolder(itemView: View): BaseViewHolder<String>(itemView){
override fun bind(title: String, position: Int) {
itemView.header_title.text = title
}
}
inner class StoreViewHolder(itemView: View): BaseViewHolder<Producto>(itemView){
override fun bind(item: Product,position: Int) {
itemView.product_title.text = item.productTitle
}
override fun getItemViewType(position: Int): Int {
return productList[position].productType
}
override fun getItemCount(): Int {
return productList.size()
}
override fun onBindViewHolder(holder: BaseViewHolder<*>, position: Int) {
val productObj = productList[position]
when (holder) {
is StoreViewHolder -> holder.bind(productObj,position)
is HeaderViewHolder -> {
when(productObj.productType){
1 -> {
holder.bind("Drinks",position)
}
2 -> {
holder.bind("Food",position)
}
}
}
else -> throw IllegalArgumentException()
}
}
Мой объект продукта это
data class Product(val productType:Int,val productTitle:String)
Моя проблема в том ... Как выбрать все продукты? с productType 1 для заголовка Drinks, а затем для productType 2 для заголовка Food, выполнение этого кода не организует элементы списка с заголовком