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

Доброго дня. Подскажите такой кейс, есть MVVM на LiveData. На

вьюхе Checkbox.
Юзер меняет стейт, вызывается checkedChange у VM, где в нашу LiveData сетится это значение, в итоге чекбокс получает стейт, о котором сам и сообщил.
Это логично, но нормально ли?

18 ответов

14 просмотров

В мире стандартных View особо никак иначе не сделаешь)

в android data binding для большинства вьюх из коробки есть проверки, но его все недолюбливают

Два этих события не должны быть связаны друг с другом. Юзер нажимает чекбокс - меняется состояние у ВМ. Если кому-то ещё интересно изменение чекбокса, то он слушает LiveData. Зачем чекбокс слушает свою собственную LiveData?

Сергей- Автор вопроса
Leonid B.
Два этих события не должны быть связаны друг с дру...

Мне кажется ты меня специально преследуешь и троллишь

Leonid B.
Два этих события не должны быть связаны друг с дру...

Вот тебе кейс: состояние чекбокса сохраняется в префах. И при повторном запуске экрана чекбокс восстанавливает свое состояние из LiveData

Сергей
Мне кажется ты меня специально преследуешь и тролл...

А мне кажется, что ты специально подписываешься на разные группы и задаешь там похожие вопросы. У тебя есть список тех, кто тебе может и кто не может отвечать, что ли?

Slim
Вот тебе кейс: состояние чекбокса сохраняется в пр...

Вероятно (вероятно!!!), инициализация при старте должна быть отделена от остальной логики. Общее правило: если приходится извращаться, значит, что-то делается не так. Нужно остановиться и подумать.

Leonid B.
Вероятно (вероятно!!!), инициализация при старте д...

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

Artem Osipov
А мне кажется так и должно быть как он описывает, ...

это былобы актуально, если бы стейт сохранялся в одном месте, а так как он может быть как во View, так и во ViewModel - его приходится руками разграничивать: И либо как предложил Leonid - разделять его хранение руками; Либо дублировать его хранение;

Jorik Fat
это былобы актуально, если бы стейт сохранялся в о...

нужно хранить стейт в одном месте. клик по чекбоксу -> ивент во viewModel. Она решает что делать на освновании стейта. И если нужно, меняет стейт. А чекбокс подписан на этот стейт и всегда отображает только его.

Igor
нужно хранить стейт в одном месте. клик по чекбок...

но в checkbox состояние тоже ведь хранит

Jorik Fat
но в checkbox состояние тоже ведь хранит

надо сделать так, чтобы не хранил. А всегда отображал то состояние, которое VM сообщает

Jorik Fat
кастомный checkbox?

как пожелаете. но я не вижу в нем необходимости.

Сергей- Автор вопроса
Leonid B.
А мне кажется, что ты специально подписываешься на...

Вовсе нет, я рад любому ответу и спасибо тебе если ты правда хотел помочь, просто мы видимо друг друга не понимаем и очень сильно. Может я просто туплю, но я так и не понял, что ты пытался сказать, ну или я так фигово задачу обрисовал. Поэтому, чтобы сделать её максимально прозрачной, я сделал небольшой пример, надеюсь из него понятно что я имел ввиду. https://gist.github.com/FirstSpectr/378b0fab2b2265f04e0bc83d051ca445

Сергей
Вовсе нет, я рад любому ответу и спасибо тебе если...

Ваше решение тоже подойдет, если чекбокс защищен от бесконечного цикла изменения его check state и последующего события от LiveData. Как бы не совсем прямо получается, но зато проверка делается штатными средствами чекбокса, что есть хорошо.

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта