Как стать автором
Обновить

Комментарии 8

Сложновато как-то. У microsoft'а это попроще сделано.

да, WPF изначально под MVVM проектировался, а тут скорее попытка воспроизвести что-то похожее и привести к этому

Эту проблему можно решить: либо достаем это через рефлексию, либо просто делаем 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
Я бы в классе ProfileViewModel в методе onChanged заменил «if (loggedIn!!)» на «if(loggedIn == true)», чтобы не было НПЕ, а в случае если loggedIn == null считалось бы, что пользователь не залогинен.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий