В контейнере виджет у меня есть ListView
с адаптером:Kivy: Обновление ListView данных с ListAdapter или DictAdapter не меняет текст кнопки
list_item_args_converter = \
lambda row_index, selectable: \
{'text': "[{}] {}: {}".format(row_index, selectable['t'], selectable['v']),
'size_hint_y': None, 'height': 25}
my_list_adapter = \
ListAdapter(data=my_data,
args_converter=list_item_args_converter,
selection_mode='single',
allow_empty_selection=False,
cls=ListItemButton)
self.list_view = ListView(adapter=my_list_adapter)
self.add_widget(self.list_view)
и my_data = [{'t':str(i), 'v':random.randint(1,10)} for i in range(5)]
. Наивное Предполагаю, что mv.list_view.adapter.data[0]['v'] = '42'
(где mv
- виджет контейнера) отправляет событие изменения в список, тем самым меняя текст кнопки первого вида списка на «[0] 0: 42
».
Однако ничего не происходит.
Аналогично, если адаптер является DictAdapter
и она изменяется аналогично (то есть, если значения являются dict
dict
ев себя, изменение этих dict
с), ничего не происходит.
Хи, спасибо за этот ответ, надеемся, что это сэкономит мне день! У меня остался один глупый вопрос ... где я должен выполнить команду adapter.data.prop.dispatch? – zwep