Size: a a a

StartAndroid Ru Chat

2020 June 05

ВM

Виталий MrShadow... in StartAndroid Ru Chat
Спасибо
источник

ВM

Виталий MrShadow... in StartAndroid Ru Chat
Можно как-то два seekBar связать  , чтоб двигались одновременно?
источник

K

Kirill in StartAndroid Ru Chat
Виталий MrShadow
Можно как-то два seekBar связать  , чтоб двигались одновременно?
Лисенер на сикбар, который меняет второй
источник

ВM

Виталий MrShadow... in StartAndroid Ru Chat
источник

ВM

Виталий MrShadow... in StartAndroid Ru Chat
Я хочу добиться чтоб минимальная цена не превышала максимальную
источник

K

Kirill in StartAndroid Ru Chat
Виталий MrShadow
Я хочу добиться чтоб минимальная цена не превышала максимальную
Лисенер на максималку и изменяешь макс значение того
источник

ВM

Виталий MrShadow... in StartAndroid Ru Chat
Спасибо
источник

K

Kirill in StartAndroid Ru Chat
А лучше посмотри на двойной сикбар
источник

ВM

Виталий MrShadow... in StartAndroid Ru Chat
Kirill
А лучше посмотри на двойной сикбар
или лучше переиграть, если ми нимальное будет больше максимальной чтоб сортировало от максимального к минимальному?))
источник

DK

Denis Koval in StartAndroid Ru Chat
всем привет.
помогите с архитектурой.
я хочу юзать мввм.
у меня есть BaseFragment и BaseViewModel.
в них базовые функции, которые используются разные фрагменты.

как вы реализуете основной фрагмент, чтобы автоматически создать экземпляр ViewModel?
источник

DK

Denis Koval in StartAndroid Ru Chat
источник

DK

Denis Koval in StartAndroid Ru Chat
Cannot use 'T' as reified type parameter. Use a class instead.
источник

SP

Sergey Panov in StartAndroid Ru Chat
Denis Koval
Cannot use 'T' as reified type parameter. Use a class instead.
В котлине как и в яве происходит стирание дженерик типов, то есть до этапа компиляции мы не знаем тип параметра Т. Как Вы хотите сделать не получится, если в конструктор фрагмента не передавать как параметр тип ViewModel. А для использования конструкторов в фрагментах нужно использовать фабрику фрагментов...
источник
2020 June 06

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Denis Koval
всем привет.
помогите с архитектурой.
я хочу юзать мввм.
у меня есть BaseFragment и BaseViewModel.
в них базовые функции, которые используются разные фрагменты.

как вы реализуете основной фрагмент, чтобы автоматически создать экземпляр ViewModel?
abstract class BaseFragment : Fragment() {

   abstract val viewModel: BaseFragmentViewModel
Как вариант. Таким образом появляется определенный контракт:
1. Программист обязан предоставить viewModel для каждого фрагмента наследующего base
2. Base фрагмент имеет доступ к функциям только base view модели
3. Каждый новый фрагмент должен предоставить view модель, которая наследует base view модель

И не надо использовать lateinit var. Используйте val by lazy. Это небезопасно и некрасиво)

Это как использовать !! имея null safety
источник

DK

Denis Koval in StartAndroid Ru Chat
Vladyslav Lozytskyi
abstract class BaseFragment : Fragment() {

   abstract val viewModel: BaseFragmentViewModel
Как вариант. Таким образом появляется определенный контракт:
1. Программист обязан предоставить viewModel для каждого фрагмента наследующего base
2. Base фрагмент имеет доступ к функциям только base view модели
3. Каждый новый фрагмент должен предоставить view модель, которая наследует base view модель

И не надо использовать lateinit var. Используйте val by lazy. Это небезопасно и некрасиво)

Это как использовать !! имея null safety
спасибо!! помог
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Denis Koval
всем привет.
помогите с архитектурой.
я хочу юзать мввм.
у меня есть BaseFragment и BaseViewModel.
в них базовые функции, которые используются разные фрагменты.

как вы реализуете основной фрагмент, чтобы автоматически создать экземпляр ViewModel?
И я Вам рекомендовал бы не использовать CorroutineScope на уровне View так как это просто представление - оно что-то отображает по команде и все, никаких корутин или контроля потоков здесь нет и не должно быть. Вынесите работу с корутинами во ViewModel.

P.S. если Вы загляните под капот ViewModel, то увидите что там уже имплементированы корутины, Вы можете сразу использовать viewModelScope для запуска корутины внутри viewModel. Корутины привязаны к ЖЦ вью модели и будут отменены при вызове onCleared во viewModel автоматически

Один из принципов SOLID.
источник

DK

Denis Koval in StartAndroid Ru Chat
Vladyslav Lozytskyi
И я Вам рекомендовал бы не использовать CorroutineScope на уровне View так как это просто представление - оно что-то отображает по команде и все, никаких корутин или контроля потоков здесь нет и не должно быть. Вынесите работу с корутинами во ViewModel.

P.S. если Вы загляните под капот ViewModel, то увидите что там уже имплементированы корутины, Вы можете сразу использовать viewModelScope для запуска корутины внутри viewModel. Корутины привязаны к ЖЦ вью модели и будут отменены при вызове onCleared во viewModel автоматически

Один из принципов SOLID.
Понял.
А скоуп вьюмодели изначально Main?
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Denis Koval
Понял.
А скоуп вьюмодели изначально Main?
CloseableCoroutineScope(SupervisorJob() + Dispatchers.Main.immediate))
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Denis Koval
Понял.
А скоуп вьюмодели изначально Main?
про "под капотом" чуток ошибся, это extensions от гугла в androidx либе.
источник

N2

N 2 in StartAndroid Ru Chat
кто нибудь писал кастомные вьюпейджеры?
источник