214 похожих чатов

Интересный вопрос к любителям MVVM. Задача: С сервера приходит список групп

с вложенными объектами. На каждый объект создается Switch, так же их нужно разделить по группам. Нужно отслеживать переключение Switch'ей. Включено может быть максимум 2 (т.е. если включается 3й - нужно отключить 1й)
Как бы Вы сделали такой кейс с управлением view из ViewModel?

22 ответов

19 просмотров

а что за Switch?

на ui создается адаптер со свичами, из MVVM прилетает текущий стейт с состояниями каждого свитча и если нужно мы что-то выключаем. Всей логикой занимается или MVVM или бизнес логика (тут на любителя)

Jorik-Fat Автор вопроса
Pêcheur
а что за Switch?

виджет такой, с логикой checkbox

Jorik-Fat Автор вопроса
Dr Dre
на ui создается адаптер со свичами, из MVVM прилет...

т.е. перерисовывить все свитчи, если в одной из групп выбран 3й? (для отключения первого)

Jorik-Fat Автор вопроса
Dr Dre
только в случае если оно изменилось

по задаче, если выбираем 3й, нужно выключить 1й

Jorik Fat
по задаче, если выбираем 3й, нужно выключить 1й

ну и делайте это в вашей логике, в чем проблема?

Jorik-Fat Автор вопроса
Dr Dre
ну и делайте это в вашей логике, в чем проблема?

в избыточной нагрузке для такой примитивной задачи

Jorik Fat
по задаче, если выбираем 3й, нужно выключить 1й

это проще сделать через единый стейт, как в MVI. Т.е. в лайвдате например лежит текущий стейт в виде data классса, в который ханосятся все изменения в UI.

Jorik-Fat Автор вопроса
Dr Dre
вот тут

так оно поменялось, как Вы во всем списке обновите только единственный Switch?

Jorik Fat
так оно поменялось, как Вы во всем списке обновите...

можно наверное взять их в группу свичей, и включать и выключать их, не понмю уже, ничего перерисовывать не нужно

Jorik-Fat Автор вопроса
Pêcheur
это проще сделать через единый стейт, как в MVI. Т...

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

Jorik Fat
так оно поменялось, как Вы во всем списке обновите...

я потому сразу написал про адаптер или берете свитч проверяете его текущее состояние, если он включен, выключаете его

Jorik Fat
как формируется стейт я понимаю. Вопрос больше о т...

включаются и выключаются конкретные свичи в пределах группы свичей

Jorik-Fat Автор вопроса
Jorik-Fat Автор вопроса
Dr Dre
ну конечно

тоже вариант. Благодарю

Jorik-Fat Автор вопроса
Pêcheur
screenshot включаются и выключаются конкретные свичи в предел...

у меня задача решена эта. Я думаю как это в mvvm сделать, минимальными затратами

Jorik Fat
у меня задача решена эта. Я думаю как это в mvvm с...

юзер поставил птичку - в ВМ улетел новый стейт с проставленной птичкой. На этот стейт вы подписаны в активити и смотрите - если такая-то конфигурация стейта теперь, то нужно снять птичку с первого, или не трогать ничего

Jorik-Fat Автор вопроса
Pêcheur
юзер поставил птичку - в ВМ улетел новый стейт с п...

Вы по сути тоже предлагаете фильтрацию в адаптере?

Jorik Fat
Вы по сути тоже предлагаете фильтрацию в адаптере?

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

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта