Комментарии 8
Сложновато как-то. У microsoft'а это попроще сделано.
Эту проблему можно решить: либо достаем это через рефлексию, либо просто делаем observeForever, который будет держать подписку на LiveData, пока мы вручную не обнулим байндинги на onDestroy.
Рефлексию ни в коем случае нельзя использовать, если в проекте ProGuard, то задолбаетесь правила добавлять
В данном случае получается доступ к полю "mListener" у объекта OnPropertyChangedCallback. Это поле используется в DataBinding'е, так что вряд ли будет выпилено ProGuard'om. Но если и перестраховаться, то придется добавить одно правило только — на этот класс конкретный или просто на все классы датабайндинга
Ужас то какой. В .NET это реализуется с помощью 1 интерфейса и доступно уже лет 11…
Я пытаюсь похожим образом использовать Architecture Components, но вместо LiveData использую Rx.
Как пример: https://github.com/Popalay/Cardme/blob/develop/app/src/main/kotlin/com/popalay/cardme/presentation/screens/cards/CardsViewModel.kt
Как пример: https://github.com/Popalay/Cardme/blob/develop/app/src/main/kotlin/com/popalay/cardme/presentation/screens/cards/CardsViewModel.kt
Я бы в классе ProfileViewModel в методе onChanged заменил «if (loggedIn!!)» на «if(loggedIn == true)», чтобы не было НПЕ, а в случае если loggedIn == null считалось бы, что пользователь не залогинен.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Android Architecture Components в связке с Data Binding