我尝试在RecycleView的每一行中放置一组两个复选框。但是,如果我单击一个复选框,则会影响其他一些复选框。 如下图:
第25,37行...... 以下是代码
main.py:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class Root(BoxLayout):
def __init__(self, **kwargs):
super(Root, self).__init__(**kwargs)
self.rv.data = [{'value': str(x)} for x in range(100)]
class MyApp(App):
def build(self):
return Root()
if __name__ == '__main__':
MyApp().run()
my.kv:
<Row@BoxLayout>:
canvas.before:
Color:
rgba: 0.5, 0.5, 0.5, 1
Rectangle:
size: self.size
pos: self.pos
value: ''
orientation: 'horizontal'
Label:
text: root.value
size_hint:0.45, 1
CheckBox:
group: root.value
size_hint:0.05, 1
state: 'down'
CheckBox:
group: root.value
size_hint:0.05, 1
<Root>:
rv: rv
RecycleView:
id: rv
viewclass: 'Row'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
这是非常简单的代码,但我不知道为什么。 你能帮忙吗?
根本原因是视图类被回收用于重用。 我们可以从RecycleDataViewBehavior派生出viewclass(必须阅读代码)。 实现refresh_view_attrs。也许将复选框的状态添加到recycleview的数据中。可以参考recycleview / init .py中的SelectableLabel示例。