Соответственно, при клике на кнопку с помощью binding'a вызывается метод onBackNavigate(), затем в фрагменте происходит некая навигация с помощью обсервера и вызывается метод onNavigateFinish(). К концу всех этих операций _eventBackNavigate.value = false.
Вопрос в следующем: у меня есть BindingAdapter, который принимает булеву переменную(как раз eventBackNavigate) и в том случае, если она true, то выполняет анимацию. Но функция BindingAdapter'а срабатывает только в конце уже всех операций и получается, что eventBackNavigate всегда равен false. Есть фикс с еще одной переменной, которой не надо бы было выставлять false после операций, но может есть какой-то более принятый способ сообщать BindingAdapter, что вот переменная изменилась, сделай что-то?
Не уверен, что до конца вник в ситуацию, но разве не проще из обсервера дергать в нужный момент метод адаптера?
Тоже можно, проблема скорее не в том, как легче, а в том, как правильнее с точки зрения архитектуры
А в какой ситуации вам вообще анимация нужна? Обычно такое делают в ответ на действие пользователя. Т.е. обрабатывают клик из колбэка/интерфейса адаптера в активити/фрагменте, там же через ViewModel вносят изменения в базу, а когда в ответ на это сработает обсервер, то в адаптере сменится список и выполнятся всякие onBindViewHolder и методы холдера, где должны быть действия над одним элементом RV.
ВЫ не совсем верно поняли. BindinAdapter не имеет никакого отношения к RV. Может быть я там непонятно изъяснился, в таком случае прошу извинить меня
А адаптером чего он является тогда?
https://developer.android.com/topic/libraries/data-binding/binding-adapters
Аа, DataBinding. Тогда не знаю, не работал с ним.
В любом случае, спасибо!
Обсуждают сегодня