ListView 中的 Kivy 访问项

Posted

技术标签:

【中文标题】ListView 中的 Kivy 访问项【英文标题】:Kivy access item in ListView 【发布时间】:2016-04-29 11:12:50 【问题描述】:

我是 kivy 的新手,我想从 ListView(或其适配器)访问列表项。但是我在任何地方都找不到任何示例。

这是一个示例代码和我想要做的:

from kivy.uix.listview import ListView
from kivy.adapters.simplelistadapter import SimpleListAdapter
from kivy.uix.label import Label

list_adapter = SimpleListAdapter(data=[str(i) for i in range(10)],cls=Label)
my_list = ListView(adapter=list_adapter)

#How do I access and modify the Label items in my_list?
#I tried list_adapter.get_view(index), but it does not seem to give me
#access to the items themselves, just copies...

对不起,如果我犯了一些明显的错误,但我仍在学习 kivy 基础知识。

【问题讨论】:

【参考方案1】:

您已创建 data 属性,其中包含数字从 0 到 9 的标签。像访问任何列表 list_adapter.data[0] = "test" 一样访问它。


如果你想直接访问Label对象,那么使用get_view函数:

class Test(App):
    def build(self):
        list_adapter = SimpleListAdapter(data=[str(i) for i in range(10)], cls=Label)
        my_list = ListView(adapter=list_adapter)
        list_adapter.data[0] = 'test'
        for i in xrange(list_adapter.get_count()):
            print 'object:', list_adapter.get_view(i),
            print ', text:', list_adapter.get_view(i).text
        return my_list

【讨论】:

但这让我可以访问我的原始对象,而不是 ListAdapter 创建的 Label 对象。正如您所提到的,在我的示例中,list_adapter.data[0] 将给我原始字符串,而不是使用此字符串生成的标签...

以上是关于ListView 中的 Kivy 访问项的主要内容,如果未能解决你的问题,请参考以下文章

C# Cast

从ArrayAdapter每毫秒更新Android ListView中的一行

Kivy:未知类 <ListView> 错误代码

急!!关于C#中Listview的使用,向Listview中添加数据的方法。

在 Android 中的顶部 ListView 项目上方(以及最后一个项目下方)添加边距

如何用文本图片和复选框过滤自定义listView?