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 访问项的主要内容,如果未能解决你的问题,请参考以下文章
从ArrayAdapter每毫秒更新Android ListView中的一行
急!!关于C#中Listview的使用,向Listview中添加数据的方法。