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

Простой вопрос. На основном экране есть список из базы данных,

и есть отдельный экран(форма редактирования), в котором можно ввести данные для добавления/изменения одно записи. Как принято делать: сохранять данные в БД прямо из формы редактирования записи, или передавать данные в основную активити и там уже их пихать в БД?

22 ответов

13 просмотров

Зависит от деталей. Из выданной инфы, сохранить на экране изменения звучит логично

Pavel-Vasilev Автор вопроса

вот и я так думаю, но часто встречаю уроки где зачем-то в основной активити ожидают данных от формы редактирования.

От уроков зависит. Если уроки вот прямо базовые, то искать глубинный смысл не всегда выйдет - они больше про детали "показать", "записать в бд" и прочее

+1 в уроках часто используется демонстрация какой то одной логики в то время когда в реальных проектах часто реализация куда сложнее

Pavel-Vasilev Автор вопроса

https://developer.android.com/codelabs/android-room-with-a-view-kotlin#15 да пример прям от гугла

Тоже когда то его проходил)

Pavel-Vasilev Автор вопроса

забавно что работа через "onActivityResult" по из же мнению уже устарела, но туторы они вряд ли поправят.

Та от дизайна часто зависит. Бывает, что на "основном" экране в тебя список всяких свойств и кнопка "сохранить", а на экране "изменений" каждое отдельное свойство меняешь. В итоге главной точкой будет кнопка с экрана списка - там запишешь/отправишь на бекенд.

Скажу больше, на "устаревшем" подходе огромное количество проектов все ещё и что-то сомневаюсь, что без пинка хорошего кто-то это менять будет в попыхах)

Pavel-Vasilev Автор вопроса

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

Не, такого шаблона проектирования точно не было у gang of four)

Секретный шаблон - сохранять и грузить данные не в UI (это не его ответственность), а в отдельном слое, который обычно называют интерактор и который знает куда и как ходить за конкретными данными.

Вопрос был не об этом, так-то)

А о чем же?

В какой момент сохранять

Когда данные готовы, тогда и да 😁 Вопрос был - сохранять в форме ввода или в активити передавать, чтобы она сохраняла. А они обе как бы UI, так-то 😏

На самом деле не все что Гугл советует используется на 100 процентов. Если я не ошибаюсь то они ретрофит только недавно признали в то время когда все проекты его использовали

Pavel-Vasilev Автор вопроса

ну непосредственно код, который пихает данные в бд будет один и тот же, что в основной активити, что в отдельной. Объект через который правильно пихаются данные можно иметь как в основной форме списка так и в форме редактирования элемента списка.

В таком случае особой разницы нет. Передача данных в активити для сохранения - лишнее телодвижение получается.

Pavel-Vasilev Автор вопроса

Я подумал, может какие анимации при добавлении/удалении данных в список некорректно отрисуются если удалить в отдельной форме а потом вернуться на список.

Дак метод вью модели же запускаете в активити и все. А вью модель в репозитории там берет что нужно и кладет что нужно

Последующая синхронизация UI должна зависеть от результатов сохранения данных. На это хорошо LiveData ложится. Все, кому надо, её слушают и обновляются.

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта