С удовольствием смотрю все видео, редкий случай когда просмотрев видео-урок без каких-то проблем начинаешь применять у себя в проекте успешно)) Для меня, как для начинающего - это очень классно!!)) Спасибо огромное!!
всем привет! во первых - большое спасибо автору за труд! очень нравится подача материала) а во вторых зашел внести свои пять копеек, если кто то сидит и пытается завести Moxy с поддержкой androidX для создания MvpAppCompatActivity иТД. Используйте свежую официальную версию - там есть поддержка androidx без необходимости сторонних форков. Смотрите свежую версию тут: github.com/moxy-community/Moxy -___- убил 1.5дня
Лучший канал по андроид разработке)) затронуты самые важные темы и истолкованы максимально доступно, я кайфую) особенно нравится манера автора доносить истины о мобильной разработке метафоричным, образным языком (корабли, маги из ночного дозора, святая корова, ну вы поняли)! Спасибо!
Забыл спросить. Как сохраняются данные при повороте экрана? Надо ли их класть в saveInstanceState/arguments? Что происходит с коллбеками? Допустим, есть фрагмент, из которого вызван диалоговый фрагмент с коллбеком обратно, а затем происходит поворот экрана. Как сделать, чтобы коллбек восстановился (поскольку диалоговое окно будет отображено)?
Здесь сложный момент. Переворот экрана хендлится Мокси автоматически, потому что презентер переживает этот поворот. Соответственно в повернувшемся стейте восстановятся все команды из очереди в соответствие со стратегией. А насчет callback, почему бы не использовать parentFragment? Если вы вызываете диалоговый фрагмент из фрагмент, то внутри него будет ссылка на parentFragment а дальше вы можете действовать а-ля (parentFragment as? CallbackInterface)?.someFunction()
Отличный урок, почти все понятно стало, но есть несколько вопросов: 1. Как вид стратегии StateStartegyType во View определяет, какие функции вызвать повторно, какие пропускать? Я ведь просто указываю список нужных мне команд и не описываю их функциональность 2. Что находится в Model? Все говорят там находится вся "бизнес логика", а что это такое?) можно какой-нибудь пример как это выглядит 3. и еще вопрос не по теме: всегда ли нужно прописывать findViewById для поиска элемента и дальнейшей работы с ним (с точки зрения правильности разработки)? просто в котлине можно просто прописывать в коде сразу id ресурса, например, my_xml_button.setOnClickListener{...} без предварительного findViewById. Или так делать неграмотно? А также есть предложение по следующим видео: - Как динамически получать информацию с какого-нибудь сайта, например, как получать новостную ленту с сайта pikabu.ru, заливать данные в RecyclerView (или во ViewPager еще интересней) и выводить на экране в виде ленты с постами(текст, картинки). С использованием Moxy конечно, чтобы попрактиковаться - Dagger2. Что это такое, зачем это нужно и как с этим работать Спасибо!
Pavel Shikleyev 1) presenter сохраняет стэк команд с определенной стратегией. После подключения новой вью он просто по порядку достаёт из стека эти команды. Стратегия определяет как именно будут складываться команды в стек 2) я буду делать ролик как я начинаю работу над проектом. Я там упомяну что это модель 3) нет не всегда. Это наследие java android. В Котлин появилась синтетика (то, что вы указали) и лучше использовать ее, но главное не забыть про ограничение что все id должны быть уникальными. Насчёт видео сниму да видео может не на примере Пикабу но сниму )
Алексей, спасибо огромное. Очень ценное видео. Начал внедрять MVP и Moxy. Не пойму что делать с настройками приложения? У меня некоторые параметры подтягиваются из SharedPreferencies, его можно взять из контекста Activity. Но вы не рекомендуете пробрасывать Context в презентер. Как быть?
Добрый день, Алексей! Большое спасибо за ваш труд. По возможности, расскажите, пожалуйста, о плюсах и минусах использования сопрограмм в котлине, особенно в связке с kotlin-coroutines-retrofit. На вид конструкции с .await() выглядят значительно удобнее реактивных аналогов.
@@MobileDeveloper Да да, они самые. Мы тоже сейчас начинаем их использовать и после rx это кажется прорывом, особенно если есть понимание работы async/await из C#. Неужели с ними действительно все так гладко? Кстати, пользуясь случаем, хочу предложить вам обмен опытом (за плечами порядка 5-ти лет работы с .NET), возможно, вам это интересно?
Ну Rx мне удобен пока что и в продакшн я корутины еще какое-то время пускать не буду. Люди пишут, что работает хорошо, но пока нет какой-то концепции как красиво это завязать с другими библиотеками, чтобы это все красиво выглядело (например для ретрофита есть rxjavacallfactory и gsonconverterfactory они очень хорошо вместе работают). Насчет C# спасибо за предложение, но я пока не понимаю как мы можем это организовать. Напишите, мне пожалуйста в вк мы обсудим как мы можем обменяться опытом. Буду очень благодарен :)
Ещё вопросик, есть активити, мы запрашиваем из бд сколько нужно создать в нём ещё фрагментов, получим список, инфлейтим их в активити, но в каждом фрагменте есть ещё некоторое количество фрагмнтов, которые мы запраштваем из бд. Грубо говоря есть в активити динамические фрагменты в которых есть ещё динамические фрагменты, как с Moxy тут работать?
@@ЕвгенийОсипов-и1ч если речь идет о Moxy, то используя InjectViewState и InjectPresenter вы никогда не получите null ) Потому что viewstate это по сути массив из реализаций вьюх. В худшем случае он просто пустой)
@@MobileDeveloper я просто для себя не могу определиться где же лучше всего делать запросы. Я вообще стал для api делать отдельную папку с разными версиями ApiClienta которые меняются в зависимости от BaseUrl, делаю папку с ApiService в которых лежат интерфейсы в которых методы для запросов ретрофита (ApiClientov) , и делаю папку для имплементации этих интерфейсов в зависимости от запросов и там реализую эти запросы, потом возвращаю в качестве результата модель запроса и работаю уже с ней. И как бы я не совсем понял, нужно ли писать запросы только в презентерах или где то в недрах репозиториев, где тот тонкий момент стандартизации, я хочу понять правильную архитектуру для работы с запросами. З.ы. та модель с которой я работаю мне удобна, но я готов ее пересмотреть на какую то более удобную архитектуру.
Сними обзор как правильно вызывать сервисы и откуда.Если их дергать из активити то при повороте они умрут тоже вместе с активити.И вообще откуда лучше их вызывать?!
Периодически появляется проблема с внедрением презентера. В разных проектах лечилась по-разному, где-то обновлением версии котлина, где-то дополнительными параметрами для kapt. А так да, библиотека супер крутая.
Здравствуйте! Вы можете платно помочь разобраться с Moxy? Создал новый проект. Поставил мокси.. при билде выдает ошибку Invoke-customs are only supported starting with Android O (--min-api 26) Я учусь разрабатывать на андроид. Постоянно нужна платная помощь! Пожалуйста если Вы можете помогать то добавьте мой скайп lihushop
Алексей, а разве правильно, что у вас View знает о репозитории? Потому что вы получаете в конструкторе презентера репозиторий? Правильней было бы сделать инит в презентере и обьявить репозиторий? Или я что-то не понимаю в Клин подходе)
@@MobileDeveloper Спасибо за ответ, очень полезное видео) У меня уже очередь стоит из ваших роликов) Осталось только про Clean вам записать, а если в all in связке с Dagger, Moxy, Rx - было бы великолепно) Просто я смотрю у вас везде Domain есть и вроде бы вы придерживаетесь Клина, но не говорите про это)
Насколько MVP + Moxy сейчас вообще актуально? Сейчас ведь гугл активно продвигает именно MVVM, есть jetpack, да и чего стоит только одна viewmodel. Несмотря на это, многие компании требуют именно MVP.
А как инициализируется CardsRepository и AuthRepository? Я что-то в AddCardActivity не заметил инициализации, у них разве что есть аннотация @Inject. Это даггер?
12:18 "model - это та штука, которой вы обмениваетесь между view и presenter'ом" То есть model это сам факт обменивания или что? никак не могу понять что такое model?
Я там объяснял, что чаще всего под моделью понимают абстрактный источник данных, но вообще, как мне кажется модель это состояние вью для из избегания ситуация когда на экране одновременно и крутится лоадер и данные отображены. Почитайте про MVI
@@MobileDeveloper у Вас это хорошо получается, думаю, что стоит сделать плейлист для начинающих(где Котлин). Просто предложил идею, т.к. вы хорошо преподносите материал.
Здравствуйте! Вы можете платно помочь разобраться с Moxy? Создал новый проект. Поставил мокси.. при билде выдает ошибку Invoke-customs are only supported starting with Android O (--min-api 26) Я учусь разрабатывать на андроид. Постоянно нужна платная помощь! Пожалуйста если Вы можете помогать то добавьте мой скайп lihushop
Интересное видео. Спасибо за проделанную вами работу Возможно вы знаете решение этой проблемы? stackoverflow.com/questions/55539654/why-didnt-moxy-initialize-the-presenter-kotlin-android?noredirect=1#comment97782715_55539654
@@MobileDeveloper А так, вы збс.... хорошая работа. Не заметил, есть ли у вас или нет... Но запилите видяшечку про repository. Это неотъемлимая часть MVP... но поскольку она как правило специфичная, то этот момент редко раскрывают полностью. У вас он подсовывается с DI... Расскажите об этом. Многим может быть непонятно... А то есть view, presenter.... но где же model?? Заранее спасибо. Вы делаете отличную работу!
Алексей, спасибо за видео. Заметил, что у тебя в AddCardActivity инжектятся репозитории, но насколько знаю представление не должно ничего знать о модели. По идее, эти репозитории должны инжектиться в презентере. Это так или есть какие-то исключения? Подскажи, пожалуйста, почему у тебя сделано именно так?
Спасибо за видео пишу из 2022 года и это до сих пор актуально и востребовано на проектах.
С удовольствием смотрю все видео, редкий случай когда просмотрев видео-урок без каких-то проблем начинаешь применять у себя в проекте успешно)) Для меня, как для начинающего - это очень классно!!)) Спасибо огромное!!
Александр Смаилов спасибо огромное, очень приятно читать такие комментарии ) будет ещё очень много видео )
Специально выучил Котлин, что смотреть ваши уроки. И ни капли не сожалею!
Спасибо! )
Спасибо большое за подробное видео! Очень помогло)))
Классный урок, Алексей 👍
всем привет! во первых - большое спасибо автору за труд! очень нравится подача материала) а во вторых зашел внести свои пять копеек, если кто то сидит и пытается завести Moxy с поддержкой androidX для создания MvpAppCompatActivity иТД. Используйте свежую официальную версию - там есть поддержка androidx без необходимости сторонних форков. Смотрите свежую версию тут: github.com/moxy-community/Moxy -___- убил 1.5дня
Спасибо, там вроде в комментах писали об этом я даже один закрепил
Большое спасибо за такой урок! Наконец начинаю нормально разбираться в архитектурах
Спасибо! Рад, что понравилось )
Хотелось бы видео про mvvm, livedata, repository(room+retrofit) желательно
Да есть такое в планах!
Спасибо за видео! Все по полочкам разложено и понятно!!!
Пожалуйста :)
Сегодня только наткнулся на канал) Про Android надо все посмотреть, очень круто)
Буду благодарен если порекомендуете друзьям )
Спасибо за видео! все очень понятно и доступно
спасибо за ваш труд, самый лучше канал по андроиду. Как давно я хотел найти такой канал. Продолжайте, кидаю ваш канал всем своим друзьям)
Спасибо вам ) это лучшая поддержка
Лучший канал по андроид разработке)) затронуты самые важные темы и истолкованы максимально доступно, я кайфую) особенно нравится манера автора доносить истины о мобильной разработке метафоричным, образным языком (корабли, маги из ночного дозора, святая корова, ну вы поняли)! Спасибо!
Спасибо большое) это очень приятно ))
Спасибо! Урок интересный, хорошо объясняется, ничего не устарело. Один из самых понятных уроков про архитектуру и сложную вещь - жизненный цикл.
Спасибо большое :)
Забыл спросить. Как сохраняются данные при повороте экрана? Надо ли их класть в saveInstanceState/arguments? Что происходит с коллбеками? Допустим, есть фрагмент, из которого вызван диалоговый фрагмент с коллбеком обратно, а затем происходит поворот экрана. Как сделать, чтобы коллбек восстановился (поскольку диалоговое окно будет отображено)?
Здесь сложный момент. Переворот экрана хендлится Мокси автоматически, потому что презентер переживает этот поворот. Соответственно в повернувшемся стейте восстановятся все команды из очереди в соответствие со стратегией. А насчет callback, почему бы не использовать parentFragment? Если вы вызываете диалоговый фрагмент из фрагмент, то внутри него будет ссылка на parentFragment а дальше вы можете действовать а-ля (parentFragment as? CallbackInterface)?.someFunction()
Очень редко бывают видео презентации на русском языке строго по сущности темы, т.е. без "воды". Эта одна из таких. Огромное спасибо автору!
Спасибо!)
Благодарю за труд, очень хорошее видео)
Спасибо большое :)
Давно искала подобное видео, спасибо большое
Всегда пожалуйста )
спасибо за такой топовый видос! это огонь
Спасибо большое!) У вас на канале много полезных видео. Возможно, есть смысл записать видео про библиотеку cicerone.
Спасибо ) такое есть в планах, да
Спасибо.
Скажите пожалуйста как Moxy переживает смену конфигурации? Как это сделано?
Отличный урок, почти все понятно стало, но есть несколько вопросов:
1. Как вид стратегии StateStartegyType во View определяет, какие функции вызвать повторно, какие пропускать? Я ведь просто указываю список нужных мне команд и не описываю их функциональность
2. Что находится в Model? Все говорят там находится вся "бизнес логика", а что это такое?) можно какой-нибудь пример как это выглядит
3. и еще вопрос не по теме: всегда ли нужно прописывать findViewById для поиска элемента и дальнейшей работы с ним (с точки зрения правильности разработки)? просто в котлине можно просто прописывать в коде сразу id ресурса, например, my_xml_button.setOnClickListener{...} без предварительного findViewById. Или так делать неграмотно?
А также есть предложение по следующим видео:
- Как динамически получать информацию с какого-нибудь сайта, например, как получать новостную ленту с сайта pikabu.ru, заливать данные в RecyclerView (или во ViewPager еще интересней) и выводить на экране в виде ленты с постами(текст, картинки). С использованием Moxy конечно, чтобы попрактиковаться
- Dagger2. Что это такое, зачем это нужно и как с этим работать
Спасибо!
Pavel Shikleyev 1) presenter сохраняет стэк команд с определенной стратегией. После подключения новой вью он просто по порядку достаёт из стека эти команды.
Стратегия определяет как именно будут складываться команды в стек
2) я буду делать ролик как я начинаю работу над проектом. Я там упомяну что это модель
3) нет не всегда. Это наследие java android. В Котлин появилась синтетика (то, что вы указали) и лучше использовать ее, но главное не забыть про ограничение что все id должны быть уникальными.
Насчёт видео сниму да видео может не на примере Пикабу но сниму )
@@MobileDeveloper вы уверены что команды складываются в стек а не в очередь?
@@alekseyreyngardt3732 спасибо! Вы абсолютно правы команды складываются в очередь, а не стек.
Алексей, спасибо огромное. Очень ценное видео. Начал внедрять MVP и Moxy. Не пойму что делать с настройками приложения? У меня некоторые параметры подтягиваются из SharedPreferencies, его можно взять из контекста Activity. Но вы не рекомендуете пробрасывать Context в презентер. Как быть?
Лучше сделать SharedPreferencesManager, который бы создавался в классе Application и держал ссылку на контекст приложения. Так делать безопасно
@@MobileDeveloper Спасибо за ответ.
спасибо за труд!
Пожалуйста ))
Добрый день, Алексей! Большое спасибо за ваш труд. По возможности, расскажите, пожалуйста, о плюсах и минусах использования сопрограмм в котлине, особенно в связке с kotlin-coroutines-retrofit. На вид конструкции с .await() выглядят значительно удобнее реактивных аналогов.
Спасибо! ) Вы имеете ввиду корутины? Да я сейчас сам присматриваюсь как их в проект запихать )
@@MobileDeveloper Да да, они самые. Мы тоже сейчас начинаем их использовать и после rx это кажется прорывом, особенно если есть понимание работы async/await из C#. Неужели с ними действительно все так гладко? Кстати, пользуясь случаем, хочу предложить вам обмен опытом (за плечами порядка 5-ти лет работы с .NET), возможно, вам это интересно?
Ну Rx мне удобен пока что и в продакшн я корутины еще какое-то время пускать не буду. Люди пишут, что работает хорошо, но пока нет какой-то концепции как красиво это завязать с другими библиотеками, чтобы это все красиво выглядело (например для ретрофита есть rxjavacallfactory и gsonconverterfactory они очень хорошо вместе работают). Насчет C# спасибо за предложение, но я пока не понимаю как мы можем это организовать. Напишите, мне пожалуйста в вк мы обсудим как мы можем обменяться опытом. Буду очень благодарен :)
А не лучше ли создание презентера закинуть в даггер( раз вы его уже используете) и инжектить как остальные зависимостия?
Тут речь про мокси, у него свои аннотации
Ещё вопросик, есть активити, мы запрашиваем из бд сколько нужно создать в нём ещё фрагментов, получим список, инфлейтим их в активити, но в каждом фрагменте есть ещё некоторое количество фрагмнтов, которые мы запраштваем из бд. Грубо говоря есть в активити динамические фрагменты в которых есть ещё динамические фрагменты, как с Moxy тут работать?
Ну вы же определённый тип фрагментов подгружаете для них будут свои классы фрагментов. В них все как обычно презентер вью и вперёд )
@@MobileDeveloper но тогда попытавшись вызвать в презентере метод из view, получаю nullpoint.
@@ЕвгенийОсипов-и1ч если речь идет о Moxy, то используя InjectViewState и InjectPresenter вы никогда не получите null ) Потому что viewstate это по сути массив из реализаций вьюх. В худшем случае он просто пустой)
Заметил у Вас в проекте пакет services, используя Moxy, где целесообразнее их вызывать и обрабатывать результат?
Ну сервисы стартуют в Активити там же я получаю результат бродкаст рисивера и пересылаю это в презентер, а он уже раскидывает
Подскажите, я правильно понимаю что запросы на сервер лучше всего делать в презентере , а не в репозитории ?
Нет, почему вы так решили? Репозиторий ещё один слой абстракции, а запросы лучше делать там, где удобно вашему проекту
@@MobileDeveloper я просто для себя не могу определиться где же лучше всего делать запросы. Я вообще стал для api делать отдельную папку с разными версиями ApiClienta которые меняются в зависимости от BaseUrl, делаю папку с ApiService в которых лежат интерфейсы в которых методы для запросов ретрофита (ApiClientov) , и делаю папку для имплементации этих интерфейсов в зависимости от запросов и там реализую эти запросы, потом возвращаю в качестве результата модель запроса и работаю уже с ней. И как бы я не совсем понял, нужно ли писать запросы только в презентерах или где то в недрах репозиториев, где тот тонкий момент стандартизации, я хочу понять правильную архитектуру для работы с запросами. З.ы. та модель с которой я работаю мне удобна, но я готов ее пересмотреть на какую то более удобную архитектуру.
Сними обзор как правильно вызывать сервисы и откуда.Если их дергать из активити то при повороте они умрут тоже вместе с активити.И вообще откуда лучше их вызывать?!
Хорошо, запишу себе
Где можно взять исходный код из видео?
К сожалению, уже нигде. Во многом то, что в этом видео сильно устарело
Расскажи про RxJava.
Рассказал )
Периодически появляется проблема с внедрением презентера. В разных проектах лечилась по-разному, где-то обновлением версии котлина, где-то дополнительными параметрами для kapt.
А так да, библиотека супер крутая.
Да у меня в логах бывают падения даже, но не могу у себя воспроизвести
Здравствуйте! Вы можете платно помочь разобраться с Moxy? Создал новый проект. Поставил мокси.. при билде выдает ошибку Invoke-customs are only supported starting with Android O (--min-api 26)
Я учусь разрабатывать на андроид. Постоянно нужна платная помощь! Пожалуйста если Вы можете помогать то добавьте мой скайп lihushop
Алексей, а разве правильно, что у вас View знает о репозитории? Потому что вы получаете в конструкторе презентера репозиторий? Правильней было бы сделать инит в презентере и обьявить репозиторий? Или я что-то не понимаю в Клин подходе)
Да вы все правильно говорите я теперь так и делаю. Опять же не до всех правильных мыслей доходишь сразу ))
@@MobileDeveloper Спасибо за ответ, очень полезное видео) У меня уже очередь стоит из ваших роликов) Осталось только про Clean вам записать, а если в all in связке с Dagger, Moxy, Rx - было бы великолепно) Просто я смотрю у вас везде Domain есть и вроде бы вы придерживаетесь Клина, но не говорите про это)
Насколько MVP + Moxy сейчас вообще актуально? Сейчас ведь гугл активно продвигает именно MVVM, есть jetpack, да и чего стоит только одна viewmodel. Несмотря на это, многие компании требуют именно MVP.
Ну вы сами ответили на свой вопрос ) до сих пор очень многие компании пишут на MVP) поэтому да, актуально )
Здравствуйте, хотелось бы сказать что вышла новая версия, можете написать в описании?
github.com/moxy-community/Moxy - здесь актуальная версия Moxy
Постараюсь не забыть добавить
А как инициализируется CardsRepository и AuthRepository? Я что-то в AddCardActivity не заметил инициализации, у них разве что есть аннотация @Inject. Это даггер?
Вы могли бы скинуть таймметку?)
@@MobileDeveloper например, вот здесь видно эту часть экрана 45:30
@@MobileDeveloper @Inject lateinit var cardsRepository: CardsRepository
вот так у вас написано.
А да это аннотации даггера
12:18 "model - это та штука, которой вы обмениваетесь между view и presenter'ом"
То есть model это сам факт обменивания или что? никак не могу понять что такое model?
Я там объяснял, что чаще всего под моделью понимают абстрактный источник данных, но вообще, как мне кажется модель это состояние вью для из избегания ситуация когда на экране одновременно и крутится лоадер и данные отображены. Почитайте про MVI
А на исходник можно посмотреть?
Исходник чего?)
@@MobileDeveloper ну этого проекта, что в видео.
@@MobileDeveloper хотелось бы поразбираться в коде, самому понавигироваться, посмотреть
если не этот проект, то хотя бы какой-то другой, очень нравится ваш подход, поизучал бы больше
Ну как-нибудь создам проект специально для этого, к сожалению, коммерческие проекты не могу выкладывать )
как-то сложновато получилось, сумбурно лучше получается когда создаете новый проект и пишите код в лайве
В Лайве не получается разобрать сложный материал. Ну и плюс это один из первых блинов того формата был )
@@MobileDeveloper с нового проекта тогда как по мне, а то тут открываешь видео и сразу столько всего на тебя навалилось
Скоро будет анонс скажем так нового формата взаимодействия )
@@MobileDeveloper будем ждать))
@@MobileDeveloper почитал немного статей, видео посмотрел про MVP / Moxy, вернулся, пересмотрел и стало понятнее ваше видео)
Канал, который уберет канал startandroid?)
Ну если вы репостните ))) Шутка ) такой цели не было. Цель - попытаться доступно изложить весьма разрозненный материал. Плюс на русском языкк
@@MobileDeveloper у Вас это хорошо получается, думаю, что стоит сделать плейлист для начинающих(где Котлин).
Просто предложил идею, т.к. вы хорошо преподносите материал.
Спасибо большое ) Есть идея сделать для начинающих, но всего я просто не успеваю
@@MobileDeveloper главное начать :)))))
Здравствуйте! Вы можете платно помочь разобраться с Moxy? Создал новый проект. Поставил мокси.. при билде выдает ошибку Invoke-customs are only supported starting with Android O (--min-api 26)
Я учусь разрабатывать на андроид. Постоянно нужна платная помощь! Пожалуйста если Вы можете помогать то добавьте мой скайп lihushop
Отписался в другом комментарии
Тоже такая ошибка была, решается просто:
В (stackoverflow.com/questions/49891730/invoke-customs-are-only-supported-starting-with-android-0-min-api-26) app/build.gradle добавить:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
@@АлександрФ-э6б Спасибо Александр!
Интересное видео.
Спасибо за проделанную вами работу
Возможно вы знаете решение этой проблемы?
stackoverflow.com/questions/55539654/why-didnt-moxy-initialize-the-presenter-kotlin-android?noredirect=1#comment97782715_55539654
Спасибо вам что смотрите )) Где то здесь писали уже нужно добавить Kotlin-kapt и добавить в Градл к библиотеке ее kapt))
@@MobileDeveloper Спасибо. Все работает
Добаить в код MainActivity mPresenter = HelloWorldPresenter
хватит говорить спиннер!!!!
У вас аллергия на слово спиннер?)😂😂
@@MobileDeveloper ну не совсем)) просто есть вьюха - "спиннер", а вы подразумеваете "прогресс бар" ( ну лоадер, на худой конец)
Ну вообще да ) очень странно, что они так назвали компонент ) потому что спиннер это крутящийся момент ) поэтому я и говорю спиннер по привычке )
@@MobileDeveloper А так, вы збс.... хорошая работа. Не заметил, есть ли у вас или нет... Но запилите видяшечку про repository. Это неотъемлимая часть MVP... но поскольку она как правило специфичная, то этот момент редко раскрывают полностью. У вас он подсовывается с DI... Расскажите об этом. Многим может быть непонятно... А то есть view, presenter.... но где же model?? Заранее спасибо. Вы делаете отличную работу!
Спасибо большое вам ) про репозитории скоро будет в рамках архитектуры ) как раз сейчас делаю цикл )
Алексей, спасибо за видео. Заметил, что у тебя в AddCardActivity инжектятся репозитории, но насколько знаю представление не должно ничего знать о модели. По идее, эти репозитории должны инжектиться в презентере. Это так или есть какие-то исключения? Подскажи, пожалуйста, почему у тебя сделано именно так?
Все правильно вы говорите. Сейчас так не делаю. Тогда мне это не казалось чем-то страшным)
@@MobileDeveloper понял. В принципе, так и подумал. Еще раз спасибо за ваш труд ;)