Size: a a a

Android arch. components

2021 February 22

PA

Pavel Antoshkin in Android arch. components
Привет всем.
Пытаюсь в проект внедрить Flow и Room. Но не могу найти толком информации, как затаскивать данные в ViewModel из БД при её изменении.
Есть Flow<List<Item>>, что в таблице БД, что переменная в VM.
Но все Codelabs и примеры говорят только о связке Flow и LiveData.
У меня измененный MVVM, в которой viewModel держит State экрана. И весьма непонятно, как подписаться на flow.collect { ..}, которая в VM не работает.
Есть идеи? Может кто ссылку даст на статью или SOF?
источник

NT

Nikita Tipun in Android arch. components
Pavel Antoshkin
Привет всем.
Пытаюсь в проект внедрить Flow и Room. Но не могу найти толком информации, как затаскивать данные в ViewModel из БД при её изменении.
Есть Flow<List<Item>>, что в таблице БД, что переменная в VM.
Но все Codelabs и примеры говорят только о связке Flow и LiveData.
У меня измененный MVVM, в которой viewModel держит State экрана. И весьма непонятно, как подписаться на flow.collect { ..}, которая в VM не работает.
Есть идеи? Может кто ссылку даст на статью или SOF?
Почему collect не работает, в ВМ же есть vkewModelScope. Ну и дальше можешь в коллекте обновлять Стейт или же у флоу есть asLiveData и там комбинируй как хочешь
источник

PA

Pavel Antoshkin in Android arch. components
Nikita Tipun
Почему collect не работает, в ВМ же есть vkewModelScope. Ну и дальше можешь в коллекте обновлять Стейт или же у флоу есть asLiveData и там комбинируй как хочешь
В том-то и дело, что при внесении изменений в таблицу в другом экране, в нужном мне VM подписка на флоу не триггерит.
источник

NT

Nikita Tipun in Android arch. components
Pavel Antoshkin
В том-то и дело, что при внесении изменений в таблицу в другом экране, в нужном мне VM подписка на флоу не триггерит.
Ну у тебя ВМ умирает и скоуп закрывается, это нормально. Но если ты зайдёшь опять на экран, то у тебя снова будет подписка на флоу и по идее должны подтянуться актуальные данные. Или это не так работает🤔
источник

PA

Pavel Antoshkin in Android arch. components
Nikita Tipun
Ну у тебя ВМ умирает и скоуп закрывается, это нормально. Но если ты зайдёшь опять на экран, то у тебя снова будет подписка на флоу и по идее должны подтянуться актуальные данные. Или это не так работает🤔
смерть ВМ зависит от навигации, имхо. У меня идет переход дальше, я не убиваю текущий экран, он остается в стеке (по идее и ВМ должна оставаться).
По крайней мере Android Navigation Components работает в таком ключе.
источник

NT

Nikita Tipun in Android arch. components
Pavel Antoshkin
смерть ВМ зависит от навигации, имхо. У меня идет переход дальше, я не убиваю текущий экран, он остается в стеке (по идее и ВМ должна оставаться).
По крайней мере Android Navigation Components работает в таком ключе.
Тогда не понятно что не работает у collect { }
источник

VU

Vadim Uzbekov in Android arch. components
Pavel Antoshkin
В том-то и дело, что при внесении изменений в таблицу в другом экране, в нужном мне VM подписка на флоу не триггерит.
Проверь состояние scope, если пользуешься не viewModelScope и закрываешь его вручную, то нужно будет заново подписываться.
Ну и ещё есть один нюанс с flow, он тут описан
https://handstandsam.com/2021/02/19/the-best-way-to-collect-a-flow-in-kotlin-launchin/
Без кода, конечно, не поймёшь, в чём проблема
источник

AP

Anton Potekhin in Android arch. components
Pavel Antoshkin
Привет всем.
Пытаюсь в проект внедрить Flow и Room. Но не могу найти толком информации, как затаскивать данные в ViewModel из БД при её изменении.
Есть Flow<List<Item>>, что в таблице БД, что переменная в VM.
Но все Codelabs и примеры говорят только о связке Flow и LiveData.
У меня измененный MVVM, в которой viewModel держит State экрана. И весьма непонятно, как подписаться на flow.collect { ..}, которая в VM не работает.
Есть идеи? Может кто ссылку даст на статью или SOF?
должно работать. У меня по крайней мере работает. Что-то вы похоже не то сделали
источник
2021 February 24

PZ

Pavlo Zelinskiy in Android arch. components
Объясните мне пожалуйста, почему data binding начинает некорректно работать, если использовать его через by lazy делегат (ну то есть val view by lazy {dataBinding.view})? При первой инициализации фрагмента все работает нормально, но после вызова onDestroyView (), такое впечатление будто сохраняется ссылка на прошлый объект data binding, хотя инициализации data binding происходит в onCreateView.
источник
2021 February 26

EG

Evgeny GooDi in Android arch. components
Подскажите с Paging3
источник

EG

Evgeny GooDi in Android arch. components
вызываю рефреш и иногда offset=5
источник

EG

Evgeny GooDi in Android arch. components
хотя должен быть 0
источник

EG

Evgeny GooDi in Android arch. components
где искать проблему даже не понимаю.
источник

EG

Evgeny GooDi in Android arch. components
источник
2021 March 01

PA

Pavel Antoshkin in Android arch. components
Привет всем.
Вопрос есть по навигации.
Кейс такой: Есть два nav_graph: nav_A и nav_B.
В графе nav_B два фрагмента - B1 и B2, у последнего есть аргумент.
В графе nav_A есть фрагмент A1.
Есть одна навигация: A1 -> B1 -> B2.
А как можно реализовать навигацию A1 -> B2, минуя B1?
источник

КП

Кирилл Прибыльский... in Android arch. components
Сделай новый нав граф в котором будет эта навигация. Или через диплинк. Насколько знаю нельзя навигироваться в конкретный экран нав графа минуя хоум дестинейшн.
источник

КП

Кирилл Прибыльский... in Android arch. components
Pavel Antoshkin
Привет всем.
Вопрос есть по навигации.
Кейс такой: Есть два nav_graph: nav_A и nav_B.
В графе nav_B два фрагмента - B1 и B2, у последнего есть аргумент.
В графе nav_A есть фрагмент A1.
Есть одна навигация: A1 -> B1 -> B2.
А как можно реализовать навигацию A1 -> B2, минуя B1?
А тебе нужно по кнопке назад вернуться на В1?
источник

PA

Pavel Antoshkin in Android arch. components
Кирилл Прибыльский
А тебе нужно по кнопке назад вернуться на В1?
нет, обратно на A1 попасть.
источник

КП

Кирилл Прибыльский... in Android arch. components
Pavel Antoshkin
нет, обратно на A1 попасть.
Тогда новый граф, я бы так сделал
источник

PA

Pavel Antoshkin in Android arch. components
Кирилл Прибыльский
Сделай новый нав граф в котором будет эта навигация. Или через диплинк. Насколько знаю нельзя навигироваться в конкретный экран нав графа минуя хоум дестинейшн.
то есть новый граф, включающий в себя оба?
источник