所以我学习Kivy,但我被ListView
或ListView
似乎被弃用了RecycleView
。
我的问题是,我希望带有species_text
ID的标签根据我点击的项目进行更改,一旦标签在视图中。
该文档帮助我制作了SelectableLabel
并能够点击/着色它,但我不知道如何通过{{1的数据列表更改species_text
的文本1}}或如何在RecycleView
类中保存数据列表。
这是我的代码:
ScreenTest
感谢您的帮助!
答案 0 :(得分:1)
apply_selection()
方法有RecycleView
个参数,考虑到我们可以创建一个包含所选文本的属性,然后我们使用Label
的文本进行绑定:
...
RecycleView:
id: species_list_view
data: [{'name': "Species1", "text": "S1"}, {'name': "Species2", "text": "S2"}]
viewclass: 'SelectableLabel'
text_selected: "" # create property
SelectableRecycleBoxLayout:
...
Label:
id: species_text
text: "Speciestext" if not species_list_view.text_selected else species_list_view.text_selected # apply binding
...
def apply_selection(self, rv, index, is_selected):
''' Respond to the selection of items in the view. '''
self.selected = is_selected
if is_selected:
print("selection changed to {0}".format(rv.data[index]))
rv.text_selected = rv.data[index]['text'] # set text
else:
print("selection removed for {0}".format(rv.data[index]))
答案 1 :(得分:0)
当您选择SelectableLabel时,您必须找到“species_text”标签并更改其文本。 一种方法是使用“apply_selection”方法。
if is_selected:
for screen in App.get_running_app().root.screens:
if screen.name == "screen_test":
screen.ids.species_text.text = rv.data[index]["name"]
P.S。 kv代码中有一个拼写错误: “touch_multiselect”属性写为“touc_multiselect”