You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取RecycleView中KivyMD列表项文本值并解决点击参数缺失报错

KivyMD RecycleView列表项点击传参报错解决方案

报错原因

你在RecycleView的data字典中直接为on_release赋值self.click_supplier时,KivyMD通过数据渲染TwoLineListItem组件的过程中,不会自动将生成的列表项实例作为参数传递给回调函数,因此调用click_supplier时缺少必填的supplier_list_item参数,触发类型错误。

解决方案

最简单的处理方式是通过lambda闭包直接捕获需要的供应商名称,无需额外获取组件实例,修改两处代码即可:

  1. 修改add_supplier_item中on_release的绑定逻辑,增加默认参数避免循环闭包的晚绑定问题:
def add_supplier_item(name_supplier):
    self.root.get_screen('select_supplier').ids.suppliers_rv.data.append(
        {
            "viewclass": "TwoLineListItem",
            "text": name_supplier,
            "secondary_text": f'Code: {suppliers_id[suppliers.index(name_supplier)]}',
            "on_release": lambda supplier=name_supplier: self.click_supplier(supplier),
        }
    )
  1. 调整click_supplier的入参,直接接收供应商名称赋值:
def click_supplier(self, supplier_name):
    self.root.get_screen('main').ids.oc_supplier.text = supplier_name
    self.go_to_screen('main')

修改完成后点击列表项即可正常将选中的供应商名称填充到主页面的输入框中。

内容的提问来源于stack exchange,提问作者Lucas Dueñas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:06:05