You need to enable JavaScript to run this app. Kotlin列表视图通过自定义适配器仅展示匹配类别的食品条目
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin列表视图通过自定义适配器仅展示匹配类别的食品条目

分类过滤功能实现的修改点汇总

一、先修复影响代码编译的基础错误

  • 修正Food实体类的定义问题
    原实体类存在属性大小写不匹配、冗余初始化逻辑、缺失Adapter依赖字段的问题,直接简化为Kotlin标准数据类写法:
    data class Food(
        val name: String,
        val kindOfFood: String,
        val price: Double
    )
    
    原代码问题说明:之前定义的属性KinOfFood首字母大写,和构造参数的kindOfFood大小写不一致,init块实际是给不存在的属性赋值;同时代码中未定义price字段,但Adapter读取item.price会直接触发编译错误,需要补上该字段。
  • 修正食品集合添加逻辑的语法错误
    原代码中沙拉对应的字符串缺失闭合双引号,且因为补上了price属性,添加条目时需要补全字段值:
    val food: ArrayList<Food> = ArrayList()
    food.add(Food("My Dish", "pizza", 68.0))
    food.add(Food("My Dish 02", "salad", 32.0))
    
  • 修正跳转传参的拼写错误
    原intentOpc方法中把参数foodType错写为fodType,导致传参时找不到变量,修正为:
    private fun intentOpc(foodType: String) {
        val intent = Intent(this, MenuList::class.java)
        intent.putExtra("FOODNAME", foodType)
        startActivity(intent)
    }
    
  • 修正自定义Adapter的类型不匹配问题
    原Adapter构造参数声明的泛型为ArrayList<Platillo>,和实际传入的Food类型不兼容,修改为:
    class MenuAdapter(var context: Context, items: ArrayList<Food>): BaseAdapter() {
        // 原有ViewHolder、getView等逻辑保持不变,冗余的items初始化逻辑可按需简化
    }
    

二、添加核心分类过滤逻辑

所有过滤操作在把数据传给Adapter之前完成,不需要改动Adapter的内部展示逻辑:

  1. 在MenuList页面的初始化阶段,先从Intent取出传递的分类参数:
    // 写在MenuList的onCreate方法中
    val targetFoodType = intent.getStringExtra("FOODNAME") ?: ""
    
  2. 获取全量食品集合后,用filter方法筛选出分类匹配的条目,生成最终要展示的集合:
    // 拿到你的全量食品数据源
    val fullFoodList = 你的全量食品集合获取逻辑
    // 执行过滤,可加trim、统一小写处理避免字符串格式问题导致匹配失败
    val filteredList = fullFoodList.filter { food ->
        food.kindOfFood.trim().lowercase() == targetFoodType.trim().lowercase()
    } as ArrayList<Food>
    // 把过滤后的集合传给Adapter完成初始化
    menuList视图控件的id.adapter = MenuAdapter(this, filteredList)
    

补充说明:这种实现方式保持了Adapter的单一职责,Adapter只负责按传入的集合渲染列表,过滤逻辑集中在页面数据准备阶段,逻辑清晰不容易出错。如果后续需要动态切换分类更新列表,可以给Adapter加一个更新数据集的方法,重新传入过滤后的集合后调用notifyDataSetChanged()即可。

内容的提问来源于stack exchange,提问作者jotaro-gogogo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 04:57:02