Size: a a a

Android Architecture

2020 April 10

Q

QMan in Android Architecture
В общем, ясно, пока так и оставлю: Observable для direct xml и LiveData для фрагмента/активности
источник

AF

Alexander Fomich in Android Architecture
QMan
В общем, ясно, пока так и оставлю: Observable для direct xml и LiveData для фрагмента/активности
А зачем обсервабл для датабайндинга?
источник

AF

Alexander Fomich in Android Architecture
Он с лайвдатой прекрасно работает
источник

Q

QMan in Android Architecture
Alexander Fomich
Он с лайвдатой прекрасно работает
не заметил, если посмотреть в лог, то у меня там двойная подписка, если использую прямо из xml. Если подписываюсь, например, из фрагмента - всё хорошо
источник

Q

QMan in Android Architecture
Именно по этой причине, видимо, все проекты гиганта подписываются на LiveData из фрагмента и потом пробрасывают в binding
источник

AF

Alexander Fomich in Android Architecture
В биндинг надо прокинуть только вьюмодель
источник

Q

QMan in Android Architecture
я в курсе
источник

AF

Alexander Fomich in Android Architecture
На лайвдату подписываются как раз в случаях, когда нужна доп обработка
источник

Q

QMan in Android Architecture
?
источник

Q

QMan in Android Architecture
для доп. обработки реализовали BindingAdapter и такой же инверсный
источник

AF

Alexander Fomich in Android Architecture
Не знаю что за беда с двойной подпиской - это либо с реализацией что-то, либо логгируете как-то странно. Там есть несколько стейтов у lifecycle, возможно вы это видите как «двойную подписку»
источник

AF

Alexander Fomich in Android Architecture
QMan
для доп. обработки реализовали BindingAdapter и такой же инверсный
BindingAdapter это просто адаптер, не стоит его всех случаях городить. Конкретно для вашей задачи подходит обычная лайвдата с типом строки и ручной подпиской из активити/фрагмента
источник

Q

QMan in Android Architecture
т.е. можно использовать LiveData и в макете ? как тогда быть: отдавать mutable или нет ? Если нет, то и байндинга в обе стороны не будет
источник

AF

Alexander Fomich in Android Architecture
QMan
т.е. можно использовать LiveData и в макете ? как тогда быть: отдавать mutable или нет ? Если нет, то и байндинга в обе стороны не будет
Почему нет? А в чем проблема отдавать mutable, если предполагается что он изменяется не только в рамках вьюмодели
источник

Q

QMan in Android Architecture
Alexander Fomich
Почему нет? А в чем проблема отдавать mutable, если предполагается что он изменяется не только в рамках вьюмодели
он изменяется только в рамках viewmodel
источник

Q

QMan in Android Architecture
любой сет инкапсулирован извне
источник

Q

QMan in Android Architecture
Alexander Fomich
Не знаю что за беда с двойной подпиской - это либо с реализацией что-то, либо логгируете как-то странно. Там есть несколько стейтов у lifecycle, возможно вы это видите как «двойную подписку»
при чем здесь жизненный цикл ? просто сами попробуйте что-то подобное:

fun data(): LiveData<String> = MutableLiveData<String>().apply {
Log.v()......
}

В первом случае подпишитесь прямо из фрагмента, во втором присвойте в разметке значение какому-нибудь текстовому полю...
источник

Q

QMan in Android Architecture
Через фрагмент - один вызов, через макет - два
источник

AF

Alexander Fomich in Android Architecture
QMan
он изменяется только в рамках viewmodel
зачем вам тогда двусторонний байндинг?
источник

Q

QMan in Android Architecture
Alexander Fomich
зачем вам тогда двусторонний байндинг?
двусторонний работает с ObservableField и т.д.
источник