Size: a a a

Android Architecture

2020 August 21

AC

Arsen CeH9 in Android Architecture
ту да же про вектор (svg)
источник

EP

Eugene P. in Android Architecture
Вектор неплохо работает. Даже лучше чем на 5-ке иногда. Помню был баг с градиентами
источник
2020 August 22

S

Sergey Mitrofanov in Android Architecture
Singular
Как идея использовать Dagger для инициализаии ViewModel?
Хочу использовать ViewModel и Activity в 3 фрагментах
У меня в репе ViewModel инициализируется в DI (выше ссылку давал). Посмотри, вдруг зайдет.
источник

S

Singular in Android Architecture
Sergey Mitrofanov
У меня в репе ViewModel инициализируется в DI (выше ссылку давал). Посмотри, вдруг зайдет.
дай ссылку, а то найти не могу
источник

S

Sergey Mitrofanov in Android Architecture
Singular
дай ссылку, а то найти не могу
источник

S

Singular in Android Architecture
Спасибо
источник

I

Igor in Android Architecture
Неужели это
override fun onCleared() = super.onCleared().also {
   selectionDisposable.dispose()
}

лучше чем это 🤔
override fun onCleared() {
   super.onCleared()
   selectionDisposable.dispose()
}
источник

S

Sergey Mitrofanov in Android Architecture
Igor
Неужели это
override fun onCleared() = super.onCleared().also {
   selectionDisposable.dispose()
}

лучше чем это 🤔
override fun onCleared() {
   super.onCleared()
   selectionDisposable.dispose()
}
То же самое. Это уже чисто вкусовщина)
источник

КП

Кирилл Прибыльский... in Android Architecture
override fun onCleared() = super.onCleared().also {
   selectionDisposable.dispose()
}
Когда очень хочется покотлить
источник

KD

Konstantin Dovnar in Android Architecture
Igor
Неужели это
override fun onCleared() = super.onCleared().also {
   selectionDisposable.dispose()
}

лучше чем это 🤔
override fun onCleared() {
   super.onCleared()
   selectionDisposable.dispose()
}
Какой ужас 😳
источник

I

Igor in Android Architecture
Еще по поводу ChooseShopListItem.
Зачем в data класс добавлять методы, приват. свойства, конструктор, когда можно написать вот так:

data class ChooseShopListItem(
   val name: String,
   val thumbnail: String?,
   val address: String,
   val navigationQuery: String?)

fun Shop.toChooseShopListItem() = ChooseShopListItem(
   name = name?.ifBlank { null } ?: "No name",
   thumbnail = photos.getOrNull(0)?.thumbnail?.ifBlank { null },
   address = getAddress(),
   navigationQuery = getNavigationQuery())
источник

I

Igor in Android Architecture
Ваш Item это просто произведение более простых типов
type ChooseShopListItem = String * String? * String * String?

зачем вы все усложняете своим ооп)
источник

S

Sergey Mitrofanov in Android Architecture
Igor
Еще по поводу ChooseShopListItem.
Зачем в data класс добавлять методы, приват. свойства, конструктор, когда можно написать вот так:

data class ChooseShopListItem(
   val name: String,
   val thumbnail: String?,
   val address: String,
   val navigationQuery: String?)

fun Shop.toChooseShopListItem() = ChooseShopListItem(
   name = name?.ifBlank { null } ?: "No name",
   thumbnail = photos.getOrNull(0)?.thumbnail?.ifBlank { null },
   address = getAddress(),
   navigationQuery = getNavigationQuery())
Можно, только зачем? Смысл этого класса не в данных, а в их применении на вью. Но вот про вычислиение один раз - мысль интересная 🤔
источник

S

Sergey Mitrofanov in Android Architecture
Igor
Ваш Item это просто произведение более простых типов
type ChooseShopListItem = String * String? * String * String?

зачем вы все усложняете своим ооп)
Суть в том, чтобы не вью решал куда и какие поля в неё класть, а это стейт-класс
источник

S

Sergey Mitrofanov in Android Architecture
Чтобы под тесты завести
источник

S

Sergey Mitrofanov in Android Architecture
Но согласен, нужно этот айтем переработать
источник

AI

Arkadii Ivanov in Android Architecture
Sergey Mitrofanov
Суть в том, чтобы не вью решал куда и какие поля в неё класть, а это стейт-класс
Так это же презентер. У понятия "Стейт" есть укоренившееся значение - мешок с данными.
источник

S

Sergey Mitrofanov in Android Architecture
Arkadii Ivanov
Так это же презентер. У понятия "Стейт" есть укоренившееся значение - мешок с данными.
Ну ливдата накладывает свои ограничения...
Задача: изменить View со стейта А на стейт Б, но оставить вью тупой (без логики). Имеем ViewModel и LiveData. Ссылки на вью у нас нет (это противоречит самой идее ViewModel).
Я пришел к такому решению - по сути паттерн "Команда". Все что знает View - по приходу стейта нужно сделать его apply на себя.
Сами стейты и ViewModel легко покрываются тестами (можно даже ещё больше View отупить).
Какой вариант вы предлагаете для отупения View, и подведения логики представления под юнит тесты по максимуму? )
источник

AI

Arkadii Ivanov in Android Architecture
Sergey Mitrofanov
Ну ливдата накладывает свои ограничения...
Задача: изменить View со стейта А на стейт Б, но оставить вью тупой (без логики). Имеем ViewModel и LiveData. Ссылки на вью у нас нет (это противоречит самой идее ViewModel).
Я пришел к такому решению - по сути паттерн "Команда". Все что знает View - по приходу стейта нужно сделать его apply на себя.
Сами стейты и ViewModel легко покрываются тестами (можно даже ещё больше View отупить).
Какой вариант вы предлагаете для отупения View, и подведения логики представления под юнит тесты по максимуму? )
Так сделайте презентер или назовите как хотите. Просто отдаленный класс, или вообще функция. Просто чтобы у состояния не было API. Типа fun Actions.apply(state)
источник

AI

Arkadii Ivanov in Android Architecture
Или вообще operator fun Actions.invoke(State)
источник