Size: a a a

2018 November 08

NY

Nikita Yatskivskiy in RxPM
Просто во ViewModel надо, например, сравнить новый список табов, который получаю из репозитория, со старым, который уже установлен во ViewPager. И если вкладки отличаются, то нужно во ViewPager их обновить. Из-за того, что State постоянно эмитить сохранённое значение при подписке (вследствие чего на каждый onStart обновлялись табы и следовательно даные во ViewPager), он мне не подошёл. Подошёл Command. Но для того, чтобы понимать, надо обновлять UI или нет, нужно было сравнивать, появился ли новый таб или нет (или наоборот их меньше стало).
источник

NY

Nikita Yatskivskiy in RxPM
Как-то так…
источник

L

Leo in RxPM
То есть надо узнать какие вкладки уже установлены во ViewPager, но идем за этой инфой мы во ViewModel? :)
источник

NY

Nikita Yatskivskiy in RxPM
ViewModel передаёт View список табов. Та их передаёт ViewPager’у
источник

NY

Nikita Yatskivskiy in RxPM
Табы - это просто список периодов.
источник

L

Leo in RxPM
Ну так задача взять новые табы из vm и сравнить с теми, что уже стоят во viewpager, зачем модели хранить старые значения?
источник

NY

Nikita Yatskivskiy in RxPM
Leo
Ну так задача взять новые табы из vm и сравнить с теми, что уже стоят во viewpager, зачем модели хранить старые значения?
Почему это модель хранит старые значения?) Она же хранит актуальные значение, те, которые в данный момент отображает View
источник

L

Leo in RxPM
Я запутался) Ты же сам написал "во viewmodel, например нужно сравнить это старое значение"
источник

NY

Nikita Yatskivskiy in RxPM
На момент получения нового списка периодов, тот который уже хранится во ViewModel, мы же можем назвать старым, верно? И если списки отличаются, то этот новый список передаётся во View и уже он становится актуальным.
источник

NY

Nikita Yatskivskiy in RxPM
Если бы у ViewPager было что-то типа DiffUtil было бы проще в данном случае)
источник

L

Leo in RxPM
Так что мешает добавить?)
источник

NY

Nikita Yatskivskiy in RxPM
Leo
Так что мешает добавить?)
Что добавить?) Написать DiffUtil для ViewPager?
источник

L

Leo in RxPM
Ну да, в том месте, где в пейджер новые табы запихиваешь и проверяй)
источник

DG

Dmitriy Gorbunov in RxPM
Есть вариант подписаться на стейт в onCreateView и отписаться в onDestroyView.
источник

NY

Nikita Yatskivskiy in RxPM
Но если я сверну приложение, а потом к нему вернусь, стейт опять накатит состояние на View.
источник

NY

Nikita Yatskivskiy in RxPM
Поэтому в моём кейсе Command идеально подошёл.
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
Но если я сверну приложение, а потом к нему вернусь, стейт опять накатит состояние на View.
нет, но нужно вручную подписаться на стейт и не забыть переключить поток в мейн
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
Поэтому в моём кейсе Command идеально подошёл.
при дестрое вью у тебя табы не восстановятся в случае команд
источник

DG

Dmitriy Gorbunov in RxPM
например после поворота
источник

NY

Nikita Yatskivskiy in RxPM
Я в таком случае просто старый адаптер цеплял ко ViewPager
источник