#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") }