Android. Пишем приложение - список дел, с использованием архитектурных компонентов от Google.

Поділитися
Вставка
  • Опубліковано 28 гру 2024

КОМЕНТАРІ •

  • @wildjoe6259
    @wildjoe6259 4 роки тому +11

    Спасибо! Данный формат по душе

  • @ЮрійБережний-с7ъ
    @ЮрійБережний-с7ъ 4 роки тому +5

    Полтора часа прошли незаметно, но с пользой! Спасибо , продолжайте в том же духе!

  • @marymayerr3438
    @marymayerr3438 Рік тому

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

  • @musilopo
    @musilopo 2 роки тому +1

    Мне очень нравится такой формат я новичок и учу джаву неделю и просто повторяю по видео что вы делаете и мне так удобнее всего учиться, я хочу сделать очень крутую игру с текстовым управлением, и пока не все понимаю, но ваш урок очень будет мне полезен. Благодарю!!!

  • @jamesbondyana
    @jamesbondyana 4 роки тому +2

    Чувак! И по больше! Побольше! ПОБОЛЬШЕ!

  • @kirilllvov4551
    @kirilllvov4551 4 роки тому +4

    Да, очень полезный формат видео. Спасибо, очень информативно!

  • @truth_Of_The_Life
    @truth_Of_The_Life 4 роки тому +3

    Спасибо вам. Очень хорошо объесняете.

  • @alexzhelyapov3556
    @alexzhelyapov3556 4 роки тому +2

    Формат видео очень информативный!!! Спасибо)

  • @andjusticeforall9473
    @andjusticeforall9473 2 роки тому

    Спасибо! Отличное видео, особенно для тех, кому требуется разжеванная информация)

  • @manygames5822
    @manygames5822 3 роки тому

    Спасибо! Формат то что надо.

  • @shluhogon_42
    @shluhogon_42 2 роки тому

    Отличный формат с подробными пояснениями

  • @ivalal
    @ivalal 4 роки тому

    Спасибо. Подробное видео намного лучше.

  • @HelloWorld-oc2eu
    @HelloWorld-oc2eu 3 роки тому

    Большое спасибо за видео, все понятно

  • @violetjellyfish2089
    @violetjellyfish2089 4 роки тому

    Сергей, большое спасибо за это и подобные видео! Они действительно очень полезны!

  • @Ruslan-bo4xk
    @Ruslan-bo4xk 4 роки тому

    Данный формат 👍Супер!

  • @myelectroword-channel
    @myelectroword-channel 4 роки тому +13

    Видео очень нравится. Можно подробнее о room, moxy, dagger 2, javaRx?

  • @arsenthompson
    @arsenthompson 5 років тому +2

    спасибо! такой формат класс!

  • @tysneproduction1344
    @tysneproduction1344 4 роки тому

    Просто лучший, кнопка подписаться серая сразу

  • @georg.sabantchiev
    @georg.sabantchiev 3 роки тому

    Да, видео очень хорошее. Стоит делать почаще.

  • @kostenko3299
    @kostenko3299 3 роки тому

    Спасибо, Вам огромное. Очень сильно помогли

  • @Estarossa_Miloserdia
    @Estarossa_Miloserdia 3 роки тому

    Всё классно!!!

  • @sergozubarev1153
    @sergozubarev1153 4 роки тому

    Круто! Спасибо!

  • @jesor1123
    @jesor1123 4 роки тому +1

    Спасибо за приложение для Диплома)

    • @arhitutorials
      @arhitutorials  4 роки тому +5

      Я когда-то для диплома нейронные сети обучал фильтром Калмана. Вот то был диплом. А теперь достаточно приложение для заметок написать. Где-то наше образование свернуло не туда))

    • @jesor1123
      @jesor1123 4 роки тому

      @@arhitutorials Есть такое)

  • @kotikvacia9970
    @kotikvacia9970 5 років тому +2

    Спасибо огромное)

  • @ПавелЗубко-ц8ч
    @ПавелЗубко-ц8ч 5 років тому +1

    спасибо продолжайте в том же духе

  • @ВиталийВерба-й8й

    Сейчас только приступил к написанию). Почему у меня вначале при сборке нет в MainActivity указания на ActivityMain, а на какой то binding?

  • @ВалерияМолорова
    @ВалерияМолорова 2 роки тому

    43:21 не могу понять, что у меня не так. Ввожу EditText, а он подсвечивается красным

  • @arsenthompson
    @arsenthompson 5 років тому

    каеф, лайк не глядя!)

  • @sunight9495
    @sunight9495 2 роки тому

    Спасибо за видео ! Подскажите сложно реализовать, чтоб выполненные заметки (те которые перечеркнутые) появлялись в другом окне?

  • @АрсенийБычаров
    @АрсенийБычаров Рік тому +1

    Здравствуйте, а вы не могли бы скинуть zip файл с ним? Что-то у меня не сладилось с этим уроком

  • @andjusticeforall9473
    @andjusticeforall9473 2 роки тому

    Сергей, Вы упомянули о том, что обращение к базе данных ресурсозатратный процесс и что лучше спроектировать приложение так, чтобы каждое такое обращение происходило в отдельном потоке. Т.е. создание БД должно выглядеть как-то так:
    public static NotesDatabase getInstance(Context context) {
    synchronized (LOCK) {
    if (notesDatabase == null) {
    notesDatabase = Room.databaseBuilder(context, NotesDatabase.class, DB_Name).build();
    }
    }
    return notesDatabase;
    }
    И должны быть созданы отдельные методы (insert, udate, delete, ...) в MainViewModel посредством AsyncTask. Например так:
    public void insertNote(Note note) {
    new InsertTask().execute(note);
    }
    private static class InsertTask extends AsyncTask {
    @Override
    protected Void doInBackground(Note... notes) {
    if (notes != null && notes.length > 0) {
    database.notesDao().insertNote(notes[0]);
    }
    return null;
    }
    }
    Я в верном направлении мыслю? Спасибо

    • @arhitutorials
      @arhitutorials  2 роки тому

      Работать будет, но лучше бы подключить RxJava, как тут:
      @Dao
      public interface NotificationDao {
      @Insert(onConflict = REPLACE)
      Completable insert(SmsNotification notification);
      }
      А в месте вызова
      notifsDao.insert(notification)
      .observeOn(AndroidSchedulers.mainThread())
      .subscribeOn(Schedulers.io())
      .subscribe();
      - это более читабельно.
      А создавать инстанс базы данных проще в Application.onCreate() и ни делать никакой синхронизации.

  • @UserSo4reUsu75ry
    @UserSo4reUsu75ry 4 роки тому

    Спасибо. Сделайте еще видео про работу с сетью и потоками.

  • @LisTyrist
    @LisTyrist 2 роки тому

    Спасибо! Подскажите, пожалуйста, две вещи:
    1. запросы в базу данных надо направить в бэк, получается, вместо allowMainThreadQueries пишу просто build()? больше нигде ничего добавлять не надо? в сети пишут, что room по-умолчанию строит потоки асинхронно в
    2. хочу сделать совместную работу в приложении нескольких пользователей (например, чтобы список можно было расшарить и (например) родители могли в реальном времени отслеживать список дел ребёнка и/или добавлять/удалять дела, делать пометки). Кажется, в каком-то приложении я видела такой функционал, но он был жутко глючный и не в реальном времени (приходилось обновляться часто, чтобы видеть, что происходит на другом устройстве).
    Насколько это реально реализовать? если реально, подскажите, пожалуйста, статьи/функционал для этого.

  • @channelMy
    @channelMy 2 роки тому

    6:25 - "Нажимаем синхронизировать", и куда мы нажимаем то? На экране этого нет...

  • @viken05
    @viken05 3 роки тому

    Здравствуйте. Спасибо за видео. Подскажите, а как вы так выделили и изменили слова в нескольких местах на 14:20 ?

    • @arhitutorials
      @arhitutorials  3 роки тому +1

      Про это есть отдельное видео)
      ua-cam.com/video/9g6SP0JDzU4/v-deo.html

  • @ВиталийВерба-й8й

    Сергей, запишите ролик как программировать экран блокировки - наполнять разнообразными виджетами

  • @ВиталийВерба-й8й

    И интересно самому дополнить возможностью перемещать задачи между собой в общем списке

  • @aarambforter7643
    @aarambforter7643 2 роки тому

    Добрый день. Хорошее видео. Нестандартный подход. Пожалуйста, покажите как добавить функцию поиска ( search) в это приложение на Java,если возможно. Спасибо.

  • @MostGood1
    @MostGood1 4 роки тому

    Здравствуйте!
    Очень хороший формат!
    А можете сделать видео по работе с Git?

  • @VirKato
    @VirKato 3 роки тому +2

    😔 диалоговые окна и контекстные меню не видно

  • @viktorviktor3086
    @viktorviktor3086 4 роки тому

    подскажите пожалуйста в классе NoteDetailsActivity при передаче toolbar в setSuportActionBar(toolbar) 43:47 среда подчеркивает и просит создать этот метод в этом классе.

    • @arhitutorials
      @arhitutorials  4 роки тому

      Для этого нужно, чтоб NoteDetailsActivity наследовало AppCompatActivity.
      github.com/Arhiser/android_todo_list/blob/master/app/src/main/java/com/arhiser/todolist/screens/details/NoteDetailsActivity.java

    • @shluhogon_42
      @shluhogon_42 2 роки тому

      заменить импорт import android.widget.Toolbar;
      на import androidx.appcompat.widget.Toolbar;

  • @АмэйзингЧенал
    @АмэйзингЧенал 3 роки тому

    Как сохраняют данные в /data/data/ куда без рут доступа не попасть, есть такое видео?

  • @azimovblog2250
    @azimovblog2250 2 роки тому

    Здравствуйте ! Что делать , если моя версия android studio не совпадает с вашей ?

  • @ya-ne-s-nimi
    @ya-ne-s-nimi 4 роки тому +1

    А как добавить поля для записи ?

  • @АрсенийБычаров

    И скажите пожалуйста от версии Android studio могут зависеть ошибки?

    • @arhitutorials
      @arhitutorials  Рік тому

      При сборке проекта в Android Studio может быть что угодно. Ситуация, когда более новая студия не может собрать проект сделаный на более старой без допиливания напильником - это обычное дело.
      Например, проблемой может быть использование устаревшей системы сборки, которая студией больше не поддерживается и т.п.

  • @Ствол-п4щ
    @Ствол-п4щ 3 роки тому

    Сергей, подскажите пожалуйста как добавить напоминание дел?

    • @arhitutorials
      @arhitutorials  3 роки тому +1

      Для напоминаний надо использовать AlarmManager:
      developer.alexanderklimov.ru/android/alarmmanager.php
      Нужно устанавливать будильник в AlarmManager, ловить сигнал от него, когда наступает заданное время и показывать уведомление в панели уведомлений.
      Если правильно понял суть вопроса.
      Как вариант, можно использовать API для гугл календаря и создавать события в нем. А там уже есть возможность настроить любые напоминания.

  • @БогданНедашковский-п1ч

    Подскажите, пожалуйста, будет ли работать данный код, только если организовать его во фрагменте, а не в активити? С помощью видео изначально начал делать во фрагменте, но данные попросту не были выведены в список, хотя рантайм ошибок во время работы приложения не было. Реализовал в активити - все работает как по маслу! Буду очень благодарен за ответ!

  • @dimdo2417
    @dimdo2417 3 роки тому

    Спасибо! Формат то что надо! Скажите пожалуйста, как в приложение добавить время т.е. когда наступает 12:00 показывается уведомление в шторке о том какое дело надо сделать! Спасибо!

  • @ЮлияЮсупова-т9е
    @ЮлияЮсупова-т9е 5 років тому +1

    Отличный видеоурок, но где посмотреть саму БД? Где можно увидеть сами строки, которые туда записываются и сами таблицы?

    • @arhitutorials
      @arhitutorials  5 років тому +2

      Это сложная задача. База данных SQLite представляет собой один файл, который по умолчанию находится на внутреннем накопителе в приватной папке данных приложения. Другие приложения туда доступа не имеют, по этому просто так файловым браузером его не достать. Самый простой способ добраться до него, это указать при создании БД путь на внешний накопитель.
      Как это сделать написано например тут:
      stackoverflow.com/questions/48903918/how-to-change-the-default-database-file-location-of-room-database
      Ну или просто добавить в приложение код, который скопирует файл БД из внутреннего накопителя на внешний.
      Открыть и редактировать файл можно любым браузером для SQLite баз данных. Я пользуюсь этим:
      sqlitebrowser.org/

  • @mrgodsmile2038
    @mrgodsmile2038 2 роки тому +1

    Помогите пожалуйста срочно вот такие ошибки. Прям очень срочно.
    Cannot resolve symbol 'Note' и другие тоже
    А при билде проекта выскакивает вот такая ошибка
    error: annotation value must be a class literal

    • @mrgodsmile2038
      @mrgodsmile2038 2 роки тому +1

      Все проблему решил правильным добавление equals и hashcode

  • @АннаМанги
    @АннаМанги Рік тому

    А если полный ноль, получится сделать что-то простое и рабочее?

  • @ИринаВолгина-н1л
    @ИринаВолгина-н1л 4 роки тому

    Здравствуйте. подскажите, как из этого приложения можно сделать многопоточное приложение?

  • @igs335
    @igs335 4 роки тому

    Хорошо бы тоже самое, но на котлине)

  • @СергейПарамонов-ж2ш

    Очень хороший и полезный урок. Подписка однозначно!) Но не могу понять, почему не видно на видео выпадающих меню?

  • @d.mertsalov
    @d.mertsalov 5 років тому +1

    Спасибо! Подметил для себя несколько полезных приёмов. Мне нравится такой формат, надеюсь ещё будут такие видео. Почему в классе Note поля с модификатором public, а не используются геттеры и сеттеры? Во всех умных книжках, рекомендуют этого не делать.

    • @arhitutorials
      @arhitutorials  5 років тому +3

      Спасибо за отзыв! Если в умных книжках рекомендуют, значит так и надо делать) Но вообще говоря, для POJO классов это не так строго. Поскольку геттеры/сеттеры используются для скрытия реализации, а в POJO реализация однозначна и скрывать там нечего. Кроме того, отсутствие геттеров как раз и может означать, что мы имеем дело с простым классом, состоящим только из полей и другой функциональности там нет и не будет.
      В общем, я считаю, что если вся функциональность класса заключается в том, чтоб содержать свои поля, то геттеры можно не использовать. В остальных случаях геттеры/сеттеры обязательно нужны.

    • @alexandernifanin7366
      @alexandernifanin7366 4 роки тому

      Если поле пишется и читается прямо (без доп. логики типа арифм. действий), setter/getter не нужны и только мешают. В Kotlin от этого просто избавились.

  • @olgaulyandina440
    @olgaulyandina440 4 роки тому

    Получается если у меня шаблон navigation drawer, то у меня каждого меня надо все заново создавать и бд, и активити?

  • @tigra-show
    @tigra-show 4 роки тому +7

    Вы когда ошибки совершаетесь, будьте добры не вырезать их, что типо у вас их нет, потому что я потом ищу что Я сделал не так, а оказывается наоборот это вы что то не объяснили, и скачайте или купите нормальный захват видео экрана

  • @TheAerhok
    @TheAerhok 4 роки тому

    А как сделать добавление данных в коде ? К примеру, что бы выводились после запуска приложения 3 записи, а остальные можно было добавить с помощью функционала вашей программы

    • @arhitutorials
      @arhitutorials  4 роки тому

      В NoteDao есть функция:
      @Insert(onConflict = OnConflictStrategy.REPLACE)
      void insert(Note note);
      На старте приложения можно проверять, если в базе данных нет ни одной записи, то с помощью этой функции вставлять сколько надо записей.

  • @АлексейРодионов-ы8о

    Это же MVVM?

  • @СергейСаранцев-р7к

    Class 'Note' is public, should be declared in a file named 'Note.java' - что делать?

    • @arhitutorials
      @arhitutorials  3 роки тому

      Переименовать файл, в котором объявлен класс Note, в Note.java. Имя файла и имя класса в нем должны совпадать.

    • @СергейСаранцев-р7к
      @СергейСаранцев-р7к 3 роки тому

      @@arhitutorials Имя файла и класса совпадает. Пользуюсь Вашим исходником . НЕ помогает.
      И еще 1. в андроид студио не удается писать код - он только перетаскивается из блокнота
      Что делать?

  • @mateus4210
    @mateus4210 4 роки тому +1

    Не подключается метод getAllLiveData() Помогите пожалуйста

    • @arhitutorials
      @arhitutorials  4 роки тому +1

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

  • @deiman8594
    @deiman8594 Рік тому +1

    Экран у вас обрезанный, не удобно понимать где и в каком файле находитесь

    • @magellan127
      @magellan127 4 місяці тому

      В левом нижнем углу пишет класс в котором он работает.

  • @СергейСаранцев-р7к

    В Модели Андроид студио ругается на строку 24 ( public Note() {
    }) как исправить?

    • @arhitutorials
      @arhitutorials  3 роки тому

      А что именно пишет?
      Если что вот исходник:
      github.com/Arhiser/android_todo_list/blob/master/app/src/main/java/com/arhiser/todolist/model/Note.java

  • @АйбекКаныбек-л7я
    @АйбекКаныбек-л7я 2 роки тому

    кто знает здесь база данных есть и как найти ?

  • @Ствол-п4щ
    @Ствол-п4щ 4 роки тому

    У меня вот такая проблема вышла, как ее решить???
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.example.bodi_men.Data.NoteDao com.example.bodi_men.App.getNoteDao()' on a null object reference

    • @arhitutorials
      @arhitutorials  4 роки тому

      Это означает, что экземпляр App у которого вызывается метод getNoteDao() равен null в момент вызова. Если Вы для доступа к App используете метод App.getInstance(), убедитесь, что в App в методе onCreate() есть строка:
      instance = this;
      Иначе поле instance так и останется null и при вызове App.getInstance().getNoteDao() как раз произойдет эта ошибка.

    • @Ствол-п4щ
      @Ствол-п4щ 4 роки тому

      @@arhitutorials Спасибо, что откликнулись, проверил,
      instance = this; есть в методе onCreate().

    • @arhitutorials
      @arhitutorials  4 роки тому

      @@Ствол-п4щ скиньте мне в телеграм проект сжатый в zip, или ссылку на код, если он на гитхабе, а я посмотрю и скажу в чем дело
      t.me/serarhi

    • @БогданНедашковский-п1ч
      @БогданНедашковский-п1ч 4 роки тому

      @@Ствол-п4щ Дружище, подскажи что у тебя было не так, такая же ошибка вызывается при запуске приложения, плиз

    • @mishanua7694
      @mishanua7694 Рік тому

      Эх, жаль не ответили, а уже 3 года прошло ​@@БогданНедашковский-п1ч

  • @samatzhussipov1139
    @samatzhussipov1139 4 роки тому

    это работает без подключения интернета?

    • @arhitutorials
      @arhitutorials  4 роки тому

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

    • @samatzhussipov1139
      @samatzhussipov1139 4 роки тому

      @@arhitutorials room это database для внутреннего хранения?

  • @НиколайФокин-п3ы
    @НиколайФокин-п3ы 5 років тому

    Не подскажете как передавать эти списки на другое устройство
    То есть если у кого-то тоже установлено это приложение и мне нужно передать этот список этому устройству

    • @arhitutorials
      @arhitutorials  5 років тому +2

      Для этого нужно записать список куда-то откуда другое устройство сможет его взять. Например можно воспользоваться облачной базой данных Firestore
      firebase.google.com/products/firestore/
      Дописать код, который при создании новой записи будет добавлять ее и в таблицу в облаке. А при обновлении списка считывать таблицу из облака и добавлять элементы, созданные на другом устройстве. В качестве ключа в таблице локальной и облачной БД придется использовать GUID, иначе будут конфликты с ключами.
      Короче говоря, надо кроме локальной базы данных иметь еще глобальную, доступную для нескольких устройств, которые с ней синхронизируются. Локальную базу данных, то есть Room, можно для простоты вообще выкинуть из приложения и работать только с Firestore.

    • @НиколайФокин-п3ы
      @НиколайФокин-п3ы 5 років тому

      @@arhitutorials нашёл как сделать так, чтобы все пользователи могли видеть одно и то же в приложении
      Но не могу понять как сделать так, чтобы из приложения можно было контролировать кто именно может просматривать твой список

    • @arhitutorials
      @arhitutorials  5 років тому

      @@НиколайФокин-п3ы , это уже сложнее, нужна отдельная таблица для пользователей. Нужна аутентификация, то есть возможность войти в приложение определенным пользователем. Нужна таблица, в которую можно будет добавлять разрешения, т.е. хранить тот факт, что пользователь A разрешает пользователю B смотреть свой список. А так же в основную таблицу нужно добавить еще одно поле, которое будет содержать id пользователя - хозяина конкретной записи. После всего этого можно будет добавить в приложение код, который будет загружать в приложение только те записи, хозяевами которых являются пользователи, которые разрешили Вам доступ к своим записям.

  • @deniskenzo6491
    @deniskenzo6491 4 роки тому +5

    Я ебу откуда 300 лайков и всего 10 дизов. Может это видео уже для джунов, которые и в java и в андроид разработке шарят, но как человеку который только начал разбираться в этом всем - это видео ничем не поможет. Половина экрана обрезана, куда ты там что нажимаешь за его пределами не видно, контекстные меню которые в самой IDE - тоже скрыты и опять же не понятно что ты нажал после ПКМ или при создании файла. Куча вырезанных моментов, где вот полупустой файл и тут бац ты откуда то(из воздуха) вставил кучу строк и пошел дальше.
    В общем на мое мнение автору 100% будет насрать, так как 300+ человек поставили лайк. Но к 30й минуте накипело, решил оставить отзыв и уйти к другому ютуберу, который хоть как то обьясняет что он пишет.
    Дизлайк

    • @arhitutorials
      @arhitutorials  4 роки тому +3

      Я не ютубер, я разработчик. Делать видео не умею. Снял как смог, кому-то помогло и то хорошо. Вы так возмущаетесь, как-будто вы мне денег заплатили)
      Теперь по сути вопроса.
      То, о чем тут говориться, уже нужно знать для устройства на первую работу. Архитектурные компоненты, все эти Room, ViewModel, LiveData сейчас must have и почти в каждой вакансии на джуниора требуются. Так что, с ютуберами или самостоятельно, но учить надо. Желаю удачи!

  • @Tyyta27
    @Tyyta27 4 роки тому

    54:06

  • @ramilskl
    @ramilskl 3 роки тому

    Как же всё сложно(

  • @sergeyvoloshin1553
    @sergeyvoloshin1553 3 роки тому

    не, товарищи, писать на java это ппц

  • @java_Developer93
    @java_Developer93 3 роки тому

    Все пишут молодец а кто ни
    будь пробовал сам сделать по урок , я как новичок даже в начале не все понял

    • @arhitutorials
      @arhitutorials  3 роки тому +1

      По этому есть ссылка на исходники проекта, чтоб можно было загрузить и разобраться самостоятельно. Тяжело объяснить такой объем материала, чтоб всем было понятно.
      Я такого уровня еще не достиг. Лучше сделать хоть что-то как получается, чем вообще ни делать ничего. Если кому-то помогло, значит оно того стоило.

    • @LisTyrist
      @LisTyrist 2 роки тому

      Привет. Я тоже новичок, изучаю Андроид месяца три.
      По видео: просто запускаешь Андроид студию, смотришь видео, останавливаешь на каждой строчке кода, переписываешь вручную (пытаешься врубиться, что она делает), потом пересматриваешь комментарии автора.
      Получается и практика и, вроде, тебя ведут за руку по проекту.
      Если не всё запомнил, после проекта перематываешь в начало и делаешь что-то похожее, но другой тематики. тут, например, можно сделать расписание уроков или список покупок - идея та же, но делаешь с дополнительными фишками.- это уже будет твой проект

  • @МихаилКостарев-ц3с

    калкулятор) простите)