RecycleView遍历并显示数据用来看大型数据的选定部分,旨在防止生成大量用于显示数据的小部件带来的性能下降。
一般情况下,我们将待显示数据添加到字典中,再将这些数据组成列表赋值给data属性,通过data生成视图,并根据需要选择对应的viewclass属性,再使用这些字典生成实例。
其设计基于MVC(模型-视图_控制器)模式,实例化RecycleView时,它将自动创建视图和数据类,但是必须手动创建布局类型并将其添加到RecycleView中。在使用布局管理器时,布局管理器必须作为子级包含在RecycleView的小部件树中的某个位置,以便可以找到视图端口。
实例: RecycleView遍历并显示数据的使用方法
新建一个recycleview.py文件,在其中将待遍历显示的数据处理好并赋值给data属性,具体代码如下:
注意:这里继承的时RecycleView遍历并显示数据的使用方法,而非之前类似的布局类
- from kivy.app import App
- from kivy.uix.recycleview import RecycleView
- class RecycleViewWidget(RecycleView):
- def __init__(self,**kwargs):
- super().__init__(**kwargs)
- self.data = [{'text':str(x)}for x in range(100)]
- class RecycleViewApp(App):
- def build(self):
- return RecycleViewWidget()
- if __name__ == '__main__':
- RecycleViewApp().run()
根据recycleview.py文件中RecycleViewApp()类 ,新建recycleview.kv文件,在文中使用Label标签来显示遍历的数据,并设置RecycleBoxLayout布局(非BoxLayout布局)布局排列子项,具体代码如下:
- <RecycleViewWidget>:
- viewclass:'Label'
- RecycleBoxLayout:
- default_size:None,dp(56)
- default_size_hint:1,None
- size_hint_y:None
- height:self.minimum_height
- orientation:'vertical'
运行recycleview.py文件,结果如下图:
RecycleView常用属性
属性 | 说明 |
data | 当前RecycleView使用的数据,格式为多个字典组成的列表,例[{'text':1},{'text':2}] |
viewclass | 当前layout_manager使用的视图类,例如:Label |
key_viewclass | 获取或设置当前的键 |
view_adapter | 表示数据集中项目的视图,使用AliasProperty类设置 |
layout_manager | 布局管理 |
data_model | 维护数据集的数据模型 |
refresh_from_data(*largs,**kwargs) | 数据更改时应调用此方法,此方法自动绑定到该类的on_data_changed()方法 |
refresh_from_layout(*largs,**kwargs) | 当布局更改或需要更改时,应调用此方法,通常在布局参数已更改且需要更新计算布局时调用 |
refresh_from_viewport(*largs) | 当窗口更改并且必须更新显示的数据时,应调用此方法,否则数据和布局都不会重新计算 |
add_widget | 添加一个新的小部件作为此小部件的子级 |
remove_widget(widget,*largs) | 从该小部件的子级中删除一个小部件 |