да
у меня 2 экрана одновременно, ViewPager)
Можно как-то эмитить сингл-ивент о изменении конкретного айтема, но это какой-то костыль. Куда проще использовать flow/livedata/rx в интерфейсе репы и пересчитать изменения через diffutils на бекграунд треде, это будет быстрее и надёжнее
а нельзя какой-нибудь отдельный объект сделать, который будут просто экраны слушать и через него будут изменения проходить?
Сделать поле в репе на лайвдата/флоу/rx, которое хранит Event<T>, где T - это что-то чем можно описать уникальность изменённого объекта, например его айдишник Написать свой аналог для этой Event<T> обёртки, так сказать дабл-ивент, который проверит каждый ли экран законсьюмил изменение. При успешном изменении данных репа кидает ивент в это поле, а затем во вьюмодельках подписываться на это поле, консьюмить ивент, и обновлять на экранах айтем который обновился :)
а чем способ через отдельный объект хуже будет?
Тем что репа будет единым источником данных и ничего не размажется по разным слоям
А не проще отобразить лайк на одном экране и сразу же этот элемент в списке поменять? Потом при отображении списка показать сразу измененный элемент. Списки же все равно связанны должны быть
Как? Они разные и не связаны
Если они никак не связаны, то как возможна ситуация что изменение в одном списке отображаются в другом?
Ну там просто получение из разных источников, я про это Но модели одни и те же
Из одного списка формируется 2 других и нужно изменения в одном отображать на другом?
Ну не совсем так, там просто продукты по категории я получаю каждый раз, а на втором экране все продукты лайкнутые
Обсуждают сегодня