Отображение только некоторых элементов списка в представлении с помощью пользовательского адаптера

#android #android-studio #kotlin

Вопрос:

У меня есть этот класс Котлина:

 class Food (name: String, kindOfFood: String) {
    var name: String = ""
    var KinOfFood: String = ""

    init {
        this.name = name
        this.kindOfFood = kindOfFood
    }
}
 

К которому я добавляю элементы в другом классе, подобном этому:

 val food: ArrayList<Food> = ArrayList()
    food.add(Food("My Dish", "pizza"))
    food.add(Food("My Dish 02", "salad))
 

При попытке отобразить элементы в представлении я использую что-то вроде этого:

 fun onCreate(){
    buttonSalad.setOnClickListener {
        intentOpc("salad")
    }
}

private fun intentOpc(foodType: String) {
    val intent = Intent(this, MenuList::class.java)
    intent.putExtra("FOODNAME", fodType)
    startActivity(intent)
}
 

Что я хочу сделать, так это отобразить только продукты той же категории (пицца, салат, паста) FOODNAME , что и в моем пользовательском адаптере, но вместо этого в списке отображаются все блюда.
это мой пользовательский адаптер:

 class MenuAdapter(var context: Context, items: ArrayList<Platillo>): BaseAdapter() {
    var items: ArrayList<Food>? = null

    init {
        this.items = items

    }

    override fun getCount(): Int {
        return items?.count()!!
    }

    override fun getItem(position: Int): Any {
        return items?.get(position)!!
    }

    override fun getItemId(position: Int): Long {
        return position.toLong()
    }


    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        var holder: ViewHolder? = null
        var myView: View? = convertView

        if (myView == null){
            myView = LayoutInflater.from(context).inflate(R.layout.activity_menu_adapter, null)
            holder = ViewHolder(myView)
            myView.tag = holder
        } else
            holder = myView.tag as ViewHolder

        val item = getItem(position) as Food
        holder.name?.text = item.name
        holder.price?.text = item.price.toString()

        return myView!!
    }

    private class ViewHolder(myView: View) {
        var name: TextView? = null
        var price: TextView? = null

        init {
            name = myView.findViewById(R.id.name)
            price = myView.findViewById(R.id.price)
        }
    }
}
 

Я хочу этого.

Вместо этого получил вот это.

Где я должен изменить свой код?

Комментарии:

1. Я нигде не вижу, чтобы вы пытались фильтровать в своем адаптере? Или вы просите нас сделать это за вас?

2. @HenryTwist Я попытался отфильтровать и получил это , но удалил строки, которые это сделали, и теперь я не помню, где они были написаны внутри адаптера.

3. отфильтруйте массив перед передачей его вашему адаптеру? items.filter { it.KinOfFood.equals("yourFoodNameFromIntent") }