Konstantin
ну, бывает малокровная модель, еще называется "анемичная", когда у тебя грубо говоря есть данные (классы без логики) и есть какой то класс который с ними работает и вся логика с их обработкой внутри этого класса иногда логика есть и внутри самих таких классов (с данными), тогда, поумневшие классы называют "энтити" т.е. сущности, и они являются частью "модели" т.к. некоторая бизнес логика внутри них есть
Konstantin
у тебя может быть отдельный класс "модель" который работает в таком анемичном стиле с "жсоном"
Konstantin
а может и не быть, тогда у тебя сущности которые умеют работать друг с другом
Konstantin
это типа "размазаная" по нескольким классам, но все еще "модель"
Mike
А, любители поархитектурить придумали UseCase'ы и Interactor'ы для «бизнес-логики». Я предпочитаю во вьюмодели (если она вообще есть).
Konstantin
а как ты хочешь обрабатывать, пример расскажи
Konstantin
...бля я тебя спрашиваю о том как ТЫ хочешь в своем приложении обрабатывать, придумай какой нибудь пример "обработки" твоих "книг и журналов"
Konstantin
а не как там "бест практис по обработке книг и журналов"
Konstantin
блин все еще ты не понял вопрос )
Mike
Нет, ты у нас спрашиваешь, КАК делать. Но расскажи для начала, ЧТО нужно сделать.
Konstantin
ну ладно давай я тебе расскажу тогда. вот сервер мне например присылает уведомления на телефон.
Konstantin
а еще у меня есть экран со всеми уведомлениями, но их я получаю с сервера. это типа всё что мне сервер когда то выслал, пуш уведомления
Konstantin
и например у меня есть флаг "прочитаности" уведомлений, типа юзер кликнул его в шторке сверху и прочитал или перешел куда то, не суть
Konstantin
вобщем, получается часть данных (уведомление) есть на сервере, часть (флаг прочитаности) хранится на девайсе (в базе например)
Konstantin
на список мне надо вывести некоторые "скомбинированые" данные, когда сам контент уведомления берется с сервера, а флаг прочитаности - из локальной базы на девайсе
Konstantin
ну вот репозиторий тут нужен например для сборки такого объекта, данные (с сервера) + флаг прочтения (с базы телефона) а модель нужна - когда юзер кликает в списке по уведомлению - оно естественно должно пометиться прочтеным, и за это может отвечать модель которая делает так model->markAsRead( notification )
Konstantin
внутри модели уже берется у объекта его ид, и в базе делается пометка что его прочитали, снаружи это вызов метода модели с аргументом notification можно не передавать объект, передать id типа model->markAsRead( notificationID ) этого тоже хватит
Konstantin
какие тут бест практис - как хочешь так и делай, главное чтоб удобно было
Konstantin
но раз уж ты про паттерн репозиторий заговорил - репозиторий это не про сохранение, это про "получение"
Konstantin
многие делают ошибку добавляя в репозиторий что то типа repository->save (myObject) или ->update, это не совсем корректно
Konstantin
т.к. ты не говоришь почтовому ящику "сохрани мое письмо", ты несешь его на почту
Konstantin
в модели
Konstantin
ну так я тебе уже сказал - вью модель это то что "касается" андроида и вывода данных на юи
Konstantin
а у тебя по идее есть и платформо-независимая логика, которая работала бы везде - вот она в "модели" (не вью-модели)
Konstantin
если брать мой пример с уведомлениями - прикинь десктопное приложение с таким же функционалом
Konstantin
написав один раз модель для андроида я бы просто перенес ее целиком на десктопную версию - т.е. логика та же самая "юзер чего то там кликнул в уведомлении и оно отметилось прочитаным" - это от платформы не зависит же
Konstantin
гугли схему mvvm
Konstantin
ну так смотри внимательно на стрелки, что там кого дёргает
Konstantin
ну если у тебя модель ничего не делает, она впринципе и нахрен не нужна )
Konstantin
бывает что ничего, просто вывести некоторое дерьмо на экран, там модель как бы и не нужна, ну конечно придерживаясь архитектуры "нужна", но вообще иногда углы срезают
Konstantin
какая нибудь навигация по каталогу где просто чтонибудь выводишь и только переходы по экранчикам
Захар
хочу сделать приложение, которое должно минимум 2 телефона задействовать, клиент и сервер и вот пришел к тому, как распространять. лучше для клиента свое приложение, где только функции клиента, а я для сервера свое или единое для всех, но уже в нем самом выбирать сервер или клиент?
Tesla
Тут столько разрабов в чате. Можно всем собраться и свою компанию открыть 😁
НИК
Приветствую
Села
Maxim
Neprivet.ru
может господин и не собирался задавать вопрос, а просто зашел в хату и поздоровался
Mikhail
Здравствуйте, при добавлении элементов в список recycler view, позиция скролла сбрасывается, а список показывается сначала. С чем может быть связана подобная проблема? NotifyDataSetChange и notifyItemRangeInserted не помогают
Mikhail
Спасибо, подкину )
T
Mojna li v androide vot tak ukazat’ CallLog iz drugoy plilogenii v default phone app?
T
Prosto odni pishut chto Google daet READ_CALL_LOG, WRITE_CALL_LOG permissions tol’ko defalt prilojeniyu
Maxim
Господа, вопрос. Есть вот такая вьюха (пик рилэйтэд). Когда пишу внизу эдиттекста курсор заходит под тулбар. Как сделать так, чтобы при смещении на следующую строку курсор был над тулбаром? P.S. присобачить эдиттекст к тулбару констреинтом не получится, потому что под эдиттекстом еще вьюхи есть
Dmytro
Ребят, подскажите, студия приболела чет, не хочет мне помогать в хмл. что сделать? ребилд делал, синк градла тоже, ивалидейт кеш и рестарт тоже
SerJanna
TS
Какая версия material design 2 сейчас стабильная implementation 'com.google.android.material:material:<version>' ?
TS
Android Studio предлагает почему -то 1.3.0 Alpha01
Dmytro
У студии есть какая-то папка, в ней надо было файлы удалить. Не помню точно как она называется
Just navigate to your android studio installation directory, i.e, yourDrive:/.AndroidStudio3.3/system and DELETE THE CACHE FOLDER ( first close android studio, if its running ).
Dmytro
Помогло?
ага, поэтому и отписал. только нужно в папку студии заходить, которая установлена. Т.е 4.0 (для меня)
TS
где это можно смотреть ,на каком ресурсе?
Dmytro
где это можно смотреть ,на каком ресурсе?
раньше на гитхабе видел раздел релизы, там было, сейчас вот по тегам глянул https://github.com/material-components/material-components-android/tags
Константин
Добрый день, недавно для себя обнаружил что на java в android немного другой code conventions. В нем сказано, что все статические переменные (public, private, protected) должны начинаться с s, например sHight ну кроме констант они public static final SOME_CONST. Но при этом я смотрю пример кода на android developers и там static поля с буквы s только те которые public, отсюда вопрос это я не так понял конвенцию или там просто допущена ошибке в стиле кода?
Константин
Dmytro
где это можно смотреть ,на каком ресурсе?
хз правда что значит rc01, есть и 1.2 там
Dmytro
Конвенция это хорошо, но не думай, что весь код, который выкладывается в семплах будет по конвенции)
Константин
да просто понимать бы насколько её применяют
SerJanna
хз правда что значит rc01, есть и 1.2 там
rc01 - release candidate #1 По сути последний этап перед релизом
Константин
я привык к java convention и даже не подозревал, что на андроид принято к private m, а к static s добавлять. вот и теперь хочу понять приучать себя к этим правилам или нет
Dmytro
rc01 - release candidate #1 По сути последний этап перед релизом
ага, харош. Спс. за 'r' - понимал что там связано с релизом, а так стало на места
Dmitry
Привет, отключаю системную кнопку "Back" для одного фрагмента, но кнопка везде работает и даже во фрагменте, где не должна этого делать, подскажет кто? Интерфейс: interface OnBackPressedInterface { fun onBackPressed() : Boolean } Активити: override fun onBackPressed() { val fragment = supportFragmentManager.findFragmentById(R.id.navFragment) if (fragment is OnBackPressedInterface) { if (!fragment.onBackPressed()) { super.onBackPressed() } } else { super.onBackPressed() } } Фрагмент: override fun onBackPressed(): Boolean { return true }
Dmytro
я привык к java convention и даже не подозревал, что на андроид принято к private m, а к static s добавлять. вот и теперь хочу понять приучать себя к этим правилам или нет
с m это венгерская нотация что ли, она уже устарела.. понятно какой-то код уже написан, но сейчас ей никто не следует
Константин
понял)
Сергей
Эта конвенция не используется сейчас обычно, кроме старого исх.кода того же андроида
Константин
спасибо)
Ярослав🇺🇦
Сколько видел пишут private String myText; и так для всего, что public, что static, private, final😂. Клали болт на эту конвенцию
Константин
по этому порой бывает полезно сначала спросить у более опытных людей, чем слепо начинать следовать каждому правилу, которое встретишь:)
Andrey
это ненужный мусор со времен эклипса, который не умел показывать тип переменной
Ярослав🇺🇦
Ну а так серезно, как надо писать по правильному