A small application for working with the Github API, made as a practical task. GeekBrains, course of study: Popular libraries: RxJava 2, Dagger 2, Moxie.

Overview

GeekBrains_Course_AndroidOnKotlin_HW_My_Movie


Домашнее задание к занятию №2-6

Студента GeekBrains Веремеенко Дмитрия
Факультет: Android-разработки
Курс: Android 5. Популярные библиотеки: RxJava 2, Dagger 2, Moxy

Комплексное задание: простое приложение "небольшой клиент, относящийся к API GitHub" реализующее архитектурный паттерн MVP


### Текущий результат (Экраны списка пользователей и информации о пользователе)


#### Экран конвертера файлов


Задачи

  • Задача №1.1. Создать новый проект, создать приложение на основе кода, приведенного в методичке".
  • Задача №1.2. Реализовать экран пользователя, на котором отобразить его логин. Переход на экран осуществите по клику на пользователя в списке через router.navigateTo.
  • Задача №1.3. На основе материала урока реализовать single-Activity-приложение, реализующее MVP через Moxy, а навигацию — с применением Cicerone, подготовить структуру для выполнения следующих ДЗ.
  • Задача №2.1. #5 Переделать взаимодействие модели и логики в коде из второго урока на Rx-паттерн.
  • Задача №2.2. #6 Самостоятельно изучить оператор switchMap. Разобраться, как он работает и чем отличается от flatMap. Сформулировать и написать ответ в комментарии к практическому заданию. Для экспериментов можно воспользоваться приведённым на уроке примером с flatMap, заменив его на switchMap, а остальное оставить без изменений (необязательное / повышенной сложности)
  • Задача №3.1. Соблюдая MVP, написать маленькое приложение, которое по нажатию кнопки читает файл-картинку формата jpg из файловой системы, а затем конвертирует её в png и записывает обратно в файловую систему. Чтение и запись должны производиться не в UI-потоке.
    //... В рамках начатой работы над приложением API GitHub принято решение выполнить данное задание просто в отдельном фрагменте...//
  • Задача №3.2. Добавить в предыдущем примере возможность отказаться от проведения операции, выведя после начала в UI-поток диалоговое окно с надписью: «Выполняется конвертация» и кнопкой «Отменить». Для наглядности замедлить процессы в фоновом потоке посредством метода sleep() (необязательное / повышенной сложности)
  • Задача №4.1. По клику на пользователя отобразите список его репозиториев, воспользовавшись полями repos_url в api и аннотациями @Url библиотеки retrofit.
  • Задача №4.2. По клику на репозиторий в списке отобразите экран с информацией о нём ( например, количество форков)
  • Задача №5.1. Вытащить кеширование в отдельные классы RoomGithubUsersCache и RoomGithubRepositoriesCache. Организовать их внедрение в репозиторий через интерфейсы.
  • Задача №5.2. Реализовать свой кеш картинок, используя listener() библиотеки Glide. Картинки хранить на диске, а в Room — CahedImage(url, localPath). (Задание предназначено, чтобы поупражняться с Room...) (необязательное / повышенной сложности)
  • Задача №6.1. Вынести в модули все остальные зависимости, чтобы DI полностью сформировался через Dagger. Уберать лишние @Inject там, где они станут не нужны.

Отчет о выполнении:


✔️ Задание №1.1. - Выполнено в полном объеме.-
✔️ Задание №1.2. - Выполнено выполнено в полном объеме, с небольшими дополнениями.-
✔️ Задание №1.3. - Выполнено.-
✔️ Задание №2.1. - Выполнено. (пока методы использовал в развернутом виде, без лямбд, подписку организовал в главном потоке) -
✔️ Задание №2.2. - Выполнено.-
✔️ Задание №3.1. - Выполнено.-
✔️ Задание №3.2. - Выполнено.-
✔️ Задание №4.1. - Выполнено. Находится на проверке.-
✔️ Задание №4.2. - Выполнено. Находится на проверке.-
✍️ Задание №5.1. - Выполняется.-
🕑 Задание №5.2. - Ожидает выполнения.-
🔒 Задание №6.1. - Заблокировано (пока).-


StDimensiy 02.08.2021

Comments
  • Базовое задание к занятию №2  - реализация экрана пользователя

    Базовое задание к занятию №2 - реализация экрана пользователя

    Реализовать экран пользователя, на котором отобразить его логин. Переход на экран осуществите по клику на пользователя в списке через router.navigateTo

    opened by stdimensiy 1
  • HW for Lesson 5

    HW for Lesson 5

    Выполнить задания:

    • Задача №4.1. По клику на пользователя отобразите список его репозиториев, воспользовавшись полями repos_url в api и аннотациями @Url библиотеки retrofit.
    • Задача №4.2. По клику на репозиторий в списке отобразите экран с информацией о нём ( например, количество форков)
    opened by stdimensiy 0
  • HW for Lesson 4*

    HW for Lesson 4*

    Добавить в предыдущем примере возможность отказаться от проведения операции, выведя после начала в UI-поток диалоговое окно с надписью «Выполняется конвертация» и кнопкой «Отменить». Для наглядности замедлить процессы в фоновом потоке посредством метода sleep().

    opened by stdimensiy 0
  • HW for Lesson 4

    HW for Lesson 4

    Соблюдая MVP, написать маленькое приложение, которое по нажатию кнопки читает файл-картинку формата jpg из файловой системы, а затем конвертирует её в png и записывает обратно в файловую систему. Чтение и запись должны производиться не в UI-потоке.

    В рамках начатой работы над приложением API GitHub принято решение выполнить данное задание просто в отдельном фрагменте.

    opened by stdimensiy 0
  • Занятие 3 задание 2

    Занятие 3 задание 2

    Самостоятельно изучить оператор switchMap. Разобраться, как он работает и чем отличается от flatMap. Сформулировать и написать ответ в комментарии к практическому заданию. Для экспериментов можно воспользоваться приведённым на уроке примером с flatMap, заменив его на switchMap, а остальное оставить без изменений

    opened by stdimensiy 0
  • Изм 4 Выполнение ДЗ к занятию №2

    Изм 4 Выполнение ДЗ к занятию №2

    • Создана разметка фрагмента информации о пользователе
    • Создан класс фрагмента
    • Создан презентер для него.
    • передача данных о пользователе фактически не происходит. Передается только идентификатор пользователя в базе GitHub в качестве параметра во фрагмент через бандл, тип значения Int Так как согласно API GitHub общая информаци о пользователе и детальная это по сути два разных объекта, и два разных ответа на запросы. Идентификатор какраз кстати.
    • презентер самостоятельно обращается к репозиторию и получает у него объект данных о пользователе по уникальному идентификатору. Пока используется тотже набор данных и тот же объект, в будущем и запрос и получаемый объект будут иные (к ДЭ не относится, будет сделано вне основной ветки работы над ДЗ)
    • внесены изменения в интерфейс организующий работу с экранами
    • внесены изменения в класс AndroidScreens.kt реализующий интерфейс IScreens? Объявлен новый экран, проброшен параметр.
    • внесены изменения в UserPresenters (На основании данных и рекомендаций полученных на занятии №3, не удержался ибо очень удобное решение)
    opened by stdimensiy 0
  • Lesson2 prepare - подготовка проекта к выполнению ДЗ выполнена.

    Lesson2 prepare - подготовка проекта к выполнению ДЗ выполнена.

    Подготовительный этап / работа с методичкой, подготовка данных

    • API GitHub в части предоставления данных пользователя изучен ( в минимальном достаточном объеме)
    • созданы заглушки, замыканий репозиторий.
    • набран и разобран поэтапно код методички урока.
    • настройки выполнены, зависимости подключены.
    opened by stdimensiy 0
  • Изм 1: подготовитльный этап

    Изм 1: подготовитльный этап

    • подклбчены необходимые зависимости
    • в качестве подготовки объекта GithubUser к автоматической конвертации посредством gson конвертера data class (POJO) просмотрена документация API github, класс созлан содержащим все поля как положено, аннотации для конвертера и частично значения по умолчанию. Для реализации аннотации подклбчена билиотека сom.google.code.gson:gson:2.8.6
    opened by stdimensiy 0
Owner
Dmitriy
Dmitriy
Copy of privat enterprice repo of project made by team 37 in course in2000 spring 2021, University of Oslo

Njord - leeway simulation app in2000-team37-njord Copy of private enterprise repo of project made by team 37 in course in2000 spring 2021, University

Petter Johan Sandvand 0 Nov 25, 2021
Android Study Jams Worker Application

Android_Study_Jams-Worker_Application Worker Application Problem Statement: The digital age is staring us in the face from the near future. We already

Deep Shahane 4 Mar 26, 2022
A simple ToDo Task Manager App made in Kotlin using Room DataBase.

ToDo List App ?? About A simple To-Do List Management App that helps you get things done. Built with Kotlin, it helps the user to add their task. User

Tanya Gupta 17 Dec 12, 2022
An Android app built with Kotlin, consuming StarWars API to display characters of the popular StarWars Movie. It is built with the MVVM pattern and the latest Jetpack components.

StarWars An Android app built with Kotlin, consuming StarWars API to display characters of the popular StarWars Movie. It is built with the MVVM patte

Joel Kanyi 42 Nov 20, 2022
A study into creating a fully automatic FRC robot

AutoFRC This is a study into creating a fully automatic FRC robot. This process relies on several key algorithms: pose estiation: using the WpiLib Dif

null 1 Jun 29, 2022
Bible Study App, by And Bible Open Source Project

Bible Study App by And Bible Open Source Project Powerful offline Bible Study tool for Android Promovideo See promovideo in Youtube Users Please see t

And Bible 437 Dec 23, 2022
An attendance recorder app for teachers. Its a part of Android Study Jams 2021 @ GDSC-NITA

Attendance-Pad An attendance recorder app for teachers, build for Android using Kotlin. This project is a part of Andoird Study Jams 2021 @ GDSC-NITA.

Developer Student Clubs - NIT Agartala 2 Jun 23, 2022
An application to follow popular movies and tv series and create watch list

MoviesAndTV MoviesAndTV is an application to follow popular movies and tv series and create watch list from your favorite tv series and movies. Also y

Elvan Erdem 3 May 25, 2022
Basic application that uses Retrofit, Moshi and Coil libraries to parse data from web API

DogAlbum_Api_CodeThrough Basic application that uses Retrofit, Moshi and Coil libraries to parse data from web API This folder contains the completed

Ayana Bando 0 Nov 9, 2021
Github User App for searching Github Users and get several information from it.

GithubUserApp Github User App for searching Github Users and get several information from it. This code implement with Coroutines, Retrofit, Architect

Wahyu Hendiarto W. 0 Apr 16, 2022
An library to help android developers working easly with activities and fragments (Kotlin version)

AFM An library to help android developer working easly with activities and fragments (Kotlin) Motivation Accelerate the process and abstract the logic

Massive Disaster 12 Oct 3, 2022
Basic RestAPI to practice my skills working with Spring/Kotlin/Gradle

Dining Review API Dining Review API is a basic RestAPI roughly based on the requirements given in a Milestone project in the Building REST APIs with J

Jonas Kuhlo 0 Nov 18, 2021
Sample app to demonstrate the integration code and working of Dyte SDK for android, using Kotlin.

Dyte Kotlin Sample App An example app in kotlin using the Dyte Mobile SDK Explore the docs » View Demo · Report Bug · Request Feature Table of Content

Dyte 8 Dec 3, 2021
An Android instance app for working with Google Map, Kotlin

map-instant-app An Android instance app Android technologies that I used: Name Description 1 Kotlin 2 Coroutine 3 Navigation 4 DataBinding 5 ViewBindi

Malihe 3 Nov 14, 2022
An Android instance app for working with Google Map, Kotlin

map-instance-app A map instance app for seeing the current position of the user and saving that in the database and showing a list of saved locations.

Malihe 2 Nov 3, 2022
Kotlin Leaning Notes from Udacity Course | Kotlin Bootcamp for Programmers by Google

Kotlin Beginners Notes These are all personal notes taken from the Udacity Course (ud9011) of Kotlin Bootcamp for Programmers by Google as well as oth

Süha Tanrıverdi 34 Dec 10, 2022
The source code of the MVVM Caching Course

MVVM Caching Course This is the source code of the MVVM Caching Course created by Florian Walther (Coding in Flow) and Gabor Varadi (Zhuinden/EpicPand

Coding in Flow 199 Dec 26, 2022
A single screen app learn in google basic Android Development course.

Project: Lemonade App - Starter Code Starter code for the first independent project for Android Basics in Kotlin Introduction This is the starter code

Kaushal Raj 0 Dec 19, 2022
The complete Android Kotlin Developer course

The complete Android Kotlin Developer course In this course you will learn how to make 17 online games, and apps for Android, using Kotlin. check the

null 0 Jan 16, 2022