Проблемы с RecycleView и ScreenManager - PullRequest
1 голос
/ 22 марта 2019

Не удается решить проблему получения данных из моей базы данных для ввода в различные текстовые входы при использовании Recycleview. Проблема существует только тогда, когда я использую ScreenManager / Screen. Когда я вызываю экран прямо из def build(self): return Screen, все работает, но не тогда, когда я вызываю диспетчер экрана, как это def build(self): return ScreenManager

файл кв

<Button>:
    on_press: app.root.get_data(*args)
<Screen>:
    BoxLayout:
        orientation: 'vertical'
        size_hint_x: .3
        RV:
            viewclass: 'Button'
            data: [{'text': str(x)} for x in root.my_data]
            RecycleBoxLayout:
                orientation: 'vertical'
                default_size: None, dp(32)
                default_size_hint: 1, None
                size_hint_y: None
                height: self.minimum_height

1 Ответ

1 голос
/ 22 марта 2019

Метод get_data() и переменная my_data реализованы в классе Screen.Без ScreenManager рут является Экран.После добавления ScreenManager теперь рут является ScreenManager.Чтобы получить доступ к методу get_data() из правила класса Button, вам необходимо выполнить следующие действия:

  • Добавить id: screen_rv после создания экземпляра правила класса, <Screen> в ScreenManager
  • Заменить app.root.get_data(*args) на app.root.ids.screen_rv.get_data(*args)

кВ - Фрагменты

<ScreenManagement>:
    ScreenRV:
        id: screen_rv

<Button>:
    on_press: app.root.ids.screen_rv.get_data(*args)

<ScreenRV>:
    name: 'screen_rv'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...