Size: a a a

Android arch. components

2019 June 12

K

Kopusha in Android arch. components
Джейк сетовал на то, что как люди с мозгами покореженными джавкой, они заняли само имя ViewModel и наебенили сверху фактори с интерфейсами, так, что без DI фиг туда зависимости протащишь. Тогда как вся эта громкая ViewModel это HashMap с твоими объектами (он и в сорцах так), который должен пережить поворот экрана. Т.е. по нормальному, они должны были дать тебе "вот мешок, кидай сюда, мы придержим". И ты его уже используешь в своем ViewModel, Presenter, NeKanoni4naiaEbalaPotomu4toNeUmeiuVArhitecturu, etc.
источник

K

Kopusha in Android arch. components
Т.е. пошли по наследованию, вместо композиции. Фу, так делать.
источник

VS

Vasyl Stoliarchuk in Android arch. components
Привет
Подключил room и вот думаю как его использовать на максимум.
Пока просто вытаскиваю из него данные обьектами, но знаю что можно получить с него LiveData<...> и подписатся на обновления данных в таблице. Но что если мне нужно для отображения экрана несколько обьектов из нескольких таблиц?
У меня сейчас MVP архитектура + корутины. Из презентера делаю несколько запросов в интерактор, получаю все необходимые данные, собираю в модельки для вьюшки, и отдаю на отрисовку. Пока происходит выгрузка данных - показываю на экране лоадер.
Видел https://developer.android.com/jetpack/docs/guide#addendum но пока всеравно не нашел ответ на вышеуказанный вопрос. Может кто подскажет?
источник

КР

Кирилл Романенко in Android arch. components
Kopusha
Джейк сетовал на то, что как люди с мозгами покореженными джавкой, они заняли само имя ViewModel и наебенили сверху фактори с интерфейсами, так, что без DI фиг туда зависимости протащишь. Тогда как вся эта громкая ViewModel это HashMap с твоими объектами (он и в сорцах так), который должен пережить поворот экрана. Т.е. по нормальному, они должны были дать тебе "вот мешок, кидай сюда, мы придержим". И ты его уже используешь в своем ViewModel, Presenter, NeKanoni4naiaEbalaPotomu4toNeUmeiuVArhitecturu, etc.
> без DI фиг туда зависимости протащишь
Да норм протащить можно.

> ViewModel это HashMap
Чё?🤔

> Они должны были дать тебе "вот мешок, кидай сюда, мы придержим"
SavedStateHandle

> Они пошли по наследованию вместо композиции
Где они так пошли? Вообще не понял к чему это
источник

D

Denys in Android arch. components
Вот saved state препогано сделано, на мой взгляд
источник

D

Denys in Android arch. components
Есть смысл делать сериализацию в saved state только в нужный момент, а не постоянно.
источник

D

Denys in Android arch. components
Плюс нужно использовать их фабрику.
источник

D

Denys in Android arch. components
А вот это наследование: class MyViewModel : ViewModel() {}. :)
источник

D

Denys in Android arch. components
У класса нет имплементации. Почему не интерфейс?
источник

D

Denys in Android arch. components
Про мапу, вероятно, имели в виду ViewModelStore.
источник

КР

Кирилл Романенко in Android arch. components
Denys
Плюс нужно использовать их фабрику.
А как без фабрики? В любом случае нужна фабрика для вьюмодели, если ты хочешь нормально передавать зависимости. И не обязательно делать на каждую вьюмодель по фабрике

https://github.com/indrih17/cleanandroid/blob/develop/cleanmvvm/src/main/java/indrih/cleanandroid/cleanmvvm/base/ViewModelFactory.kt

https://github.com/indrih17/cleanandroid/blob/develop/cleanmvvm/src/main/java/indrih/cleanandroid/cleanmvvm/utils/Extensions.kt
источник

КР

Кирилл Романенко in Android arch. components
Denys
А вот это наследование: class MyViewModel : ViewModel() {}. :)
Ну норм, чё
источник

КР

Кирилл Романенко in Android arch. components
Denys
У класса нет имплементации. Почему не интерфейс?
Ну явно же были причины
источник

Y

Yanis in Android arch. components
Может кто работал с paging library, можно ли там инвалидировать один конкретный элемент?
Я когда дергаю invalidate у меня весь RecyclerView пересоздается и кидает в самое начало
использую PositionalDataSource
источник

D

Denys in Android arch. components
Кирилл Романенко
Ну явно же были причины
Так любой плохой дизайн можно оправдать. :)
источник

КР

Кирилл Романенко in Android arch. components
Denys
Так любой плохой дизайн можно оправдать. :)
Чувак, они писали на джаве ещё в то время. На джаве 6 нет интерфейсов с дефолтной реализацией методов. Как они бы тебе сделали интерфейсы?
источник

D

Denys in Android arch. components
Кирилл Романенко
А как без фабрики? В любом случае нужна фабрика для вьюмодели, если ты хочешь нормально передавать зависимости. И не обязательно делать на каждую вьюмодель по фабрике

https://github.com/indrih17/cleanandroid/blob/develop/cleanmvvm/src/main/java/indrih/cleanandroid/cleanmvvm/base/ViewModelFactory.kt

https://github.com/indrih17/cleanandroid/blob/develop/cleanmvvm/src/main/java/indrih/cleanandroid/cleanmvvm/utils/Extensions.kt
Я о том, что если у меня есть фабрика для моих ViewModel, а потом я хочу использовать SavedStateHandle механизм - мои фабрики выбрасываются.
источник

КР

Кирилл Романенко in Android arch. components
Denys
Я о том, что если у меня есть фабрика для моих ViewModel, а потом я хочу использовать SavedStateHandle механизм - мои фабрики выбрасываются.
Нет, посмотри внимательно
источник

D

Denys in Android arch. components
Кирилл Романенко
Чувак, они писали на джаве ещё в то время. На джаве 6 нет интерфейсов с дефолтной реализацией методов. Как они бы тебе сделали интерфейсы?
А у ViewModel и нет дефолтной реализации.
источник

D

Denys in Android arch. components
Кирилл Романенко
Нет, посмотри внимательно
Смотрю.

androidx.lifecycle.SavedStateHandle

A handle to saved state passed down to ViewModel. You should use SavedStateVMFactory if you want to receive this object in ViewModel's constructor.
источник