Как добавить заголовок в мой список утилизации - PullRequest
0 голосов
/ 27 марта 2020

У меня есть список продуктов, у каждого продукта есть 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, выполнение этого кода не организует элементы списка с заголовком

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...