ли мы во вью напрямую обращаться к livedata в viewmodel? 2) Есть список, нужно чтобы сейвил стейт при поворотах, и чтобы поля айтемов адаптера были val. Как это сделать с точки зрения разбиения на сущности?
1. А как иначе? 2. Юзай SavedStateHandle. Про поля айтемов адаптера не понял.
1)ну прост во всех примерах, что я видел с лайв дата работают через обсервер,а мне надо просто через value. 2)А что не понятно? В адаптер подаётся список айтемов, у каждого все поля неизменяемые, то есть стейт айтема не обновить
1. Так ты спросил про обращение к livedata в ViewModel, а не из других источников (фрагмент, активити). 2. Ну и норм, а в чём вопрос?
1)Так нет, я имел ввиду как раз обращение из активити/фрагмента к полю livedata. value, не вешая обсервер. 2)Проблема в том, что мне например надо, чтобы работало переключение радиокнопки у айтема по клику. Для этого нужен предыдущий стейт кнопки до клика. Я думал в айтеме поле изменяемое создать для этого,но так нельзя. Как я понимаю, нужно тогда в адаптере вызывать колбек, ведущий в активити, передавать туда радиокнопку, там же проверять сохранённый стейт кнопки , и так далее?
1. Какой тогда вообще смысл от ливдаты? Сделай обычное мутабельное поле. 2. Если ты хочешь, чтобы стейт в вьюмодели был single source of truth, то можешь сделать вот какой хак: вешаешь на радиокнопку листенер, когда он дёргается - сеттишь предыдущее значенте, потом передаешь инфу в вьюмодель, ну а когда вся эта цепочка дойдёт до адаптера - сеттишь новое значение в кнопку. Тогда у тебя не будет дубляция стейтов (у вью свой стейт, у модели свой).
1)ну смысл в том, что мне надо по нажатию на кнопку вывести тост с данными из лайв даты. При этом в другом месте я подписан на обновление, но конкретно здесь мне просто нужно узнать че там лежит. 2) "Когда цепочкаа дойдёт до адаптера" ты имеешь ввиду подачу туда обновлённого списка?
1. А, ну да, тогда норм 2. Да
2.Ок, но ведь у меня в ливе дате будет не список айтемов, а список других моделей с изменяемыми полями. И тогда при каждом изменении стейта мне надо будет конвертировать этот список в список айтемов. Разве это не накладно? Плюс дальше нам будет нужен diffutils по идеи?
А ты без дифф ютилс на больших списках живёшь? Мне проще сказать, когда он не нужен. Обычно он нужен почти всегда.
Обсуждают сегодня