【发布时间】:2020-02-14 10:21:12
【问题描述】:
我从 kivy 了解到,RecycleView 能够在数据更改后通过手动调用 refresh_from_data() 来更新数据。我还有几个问题。
这是我的代码。我试图简化它,因为原来的很长。
在.py中,
class FilterPage(Screen):
def call_DB(self, price_min, price_max):
'codes and shits'
'Basically, I filter some result according to users input'
'and store it in a list called real_result'
'I want to update content and length of real_result for RecycleView'
self.app = App.get_running_app()
self.rv = self.app.rv
self.rv.refresh_from_data()
class RV(RecycleView):
def __init__(self, **kwargs):
super(RV, self).__init__(**kwargs)
global real_result
self.data = [{'text': str(x)} for x in range(len(real_result))]
kv = Builder.load_file("test.kv")
class MyApp(App):
rv = RV()
def build(self):
return kv
MyApp().run()
在.kv中,
<ProductButton>:
on_release: print("success")
canvas.before:
Color:
rgba: (0.4, 0.9, 0.1, 0.3)
Rectangle:
pos: self.pos
size: self.size
<RV>:
viewclass: 'ProductButton'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
multiselect: True
touch_multiselect: True
spacing: 10
<ProductPage>:
canvas:
Rectangle:
source: "dot01.png"
size: root.width, root.height
pos: self.pos
BoxLayout:
orientation: "vertical"
RV:
Button:
text: 'Previous screen'
size_hint: None, None
size: 150, 50
- 对要更新的数据格式有什么限制吗? 我读了这个,https://kivy.org/doc/stable/_modules/kivy/uix/recycleview.html。我还应该在我的 RecycleView 类中包含这部分代码吗?
def refresh_from_data(self, *largs, **kwargs):
self._refresh_flags['data'].append(kwargs)
self._refresh_trigger()
我只想更新 real_result 中的内容及其长度。可以通过拨打
refresh_from_data()来完成吗?调用时我应该传递任何变量吗?我想在 self.data 中包含一些信息。怎么样?
问题有点长,我剪了很多代码。如果您需要更多详细信息,请在下面发表评论。非常感谢。
【问题讨论】: