У меня хорошо работает база данных на Firebase от Google, я могу легко сохранять там свои данные. Я хотел бы вернуть эти данные для моего приложения, но, прежде чем у меня возникнут проблемы с этим, я не могу ничего перечислить в Kivy.
Я бы хотел использовать ListView от Kivy, но в документации рекомендуется использовать RecycleView. Но я не могу понять документацию. У меня есть некоторые сомнения.
Если вы можете прочитать документы RecycleView , вы увидите это в качестве примера:
Builder.load_string('''
<RV>:
viewclass: 'Label'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
''')
class RV(RecycleView):
def __init__(self, **kwargs):
super(RV, self).__init__(**kwargs)
self.data = [{'text': str(x)} for x in range(100)]
class TestApp(App):
def build(self):
return RV()
if __name__ == '__main__':
TestApp().run()
Но я использую ScreenManager для управления моими экранами, затем в классе TestApp я возвращаю 'sm', как в этом примере документации:
# Declare both screens
class MenuScreen(Screen):
pass
class SettingsScreen(Screen):
pass
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
Если вы видите, что синтаксис отличается, и я здесь не знаю, как это кодировать. Я хотел бы продолжать использовать ScreenManager для управления экранами и использовать RecycleView для возврата моих данных в список.
Как я могу использовать RecycleView с моим ScreenManager? Это мой main.py, я настраиваю экран в другом документе и тоже использую язык ки. Так что, если вы все можете сделать пример для меня, я буду благодарен.
import kivy
from kivy.app import App, Builder
from kivy.config import Config
from kivy.uix.screenmanager import ScreenManager
from telas.telas import Acesso, Comprando, Vendendo, CadastrarEvento
kivy.require('1.10.1')
Builder.load_file('ing.kv')
Config.read('config.ini')
sm = ScreenManager()
sm.add_widget(Acesso(name='acesso'))
sm.add_widget(Comprando(name='comprando'))
sm.add_widget(Vendendo(name='vendendo'))
sm.add_widget(CadastrarEvento(name='cadastrarEvento'))
sm.add_widget(ListaEventos(name='listaEventos'))
class IngApp(App):
def build(self):
return sm
if __name__ == '__main__':
IngApp().run()
Вот кв, который я пробовал в первый раз
<ListaEventos>:
canvas:
Rectangle:
source: 'design/fundo.png'
size: self.width, self.height
viewclass: 'Label'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
ListaEventos:
class ListaEvento(Screen, RecycleView):
def __init__(self, **kwargs):
super(ListaEvento, self).__init__(**kwargs)
self.data = [{'text': str(x)} for x in range(20)]