# Домашнее задание Цель данного задания укрепить знания, полученные в ходе первой лекции. [Здесь](https://www.figma.com/file/fmFliNHiZjzEgB7grM92KL/HSE-Android-HW1?node-id=6%3A101) можно посмотреть макеты экранов, которые вам предстоит сверстать в ходе выполнения задания. Само задание разделено на три этапа. ## Этап 0 - подготовительный Прежде чем приступить к выполнению задания, вам необходимо подключить `ktlint` к вашему проекту. Add [KtLint](https://github.com/pinterest/ktlint) to the project ### 1. Create ktlint.gradle Create file ```bash mkdir code_quality_tools touch code_quality_tools/ktlint.gradle ``` ktlint.gradle ```groovy repositories { jcenter() } configurations { ktlint } dependencies { ktlint 'com.pinterest:ktlint:0.41.0' } task ktlint(type: JavaExec, group: "verification") { description = "Check Kotlin code style." main = "com.pinterest.ktlint.Main" classpath = configurations.ktlint args = ["--disabled_rules=no-multi-spaces,package-name", "src/main/**/*.kt"] } check.dependsOn ktlint task ktlintFormat(type: JavaExec, group: "verification") { description = "Format Kotlin code style." main = "com.pinterest.ktlint.Main" classpath = configurations.ktlint args = ["-F", "--disabled_rules=no-multi-spaces,package-name", "src/main/**/*.kt"] } ``` ### 2. Add config to module build.gradle ```groovy apply from: '../code_quality_tools/ktlint.gradle' ``` ### 3. Set up CI GitHub actions ```bash mkdir -p .github/workflows touch .github/workflows/feature.yml ``` ```yaml name: Feature Branch CI on: push: branches: - '*' jobs: ci: name: Run ktlint runs-on: ubuntu-latest steps: - name: Clone Repo uses: actions/checkout@v2 - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: Run ktlint run: bash ./gradlew ktlint --stacktrace ``` Теперь вы можете локально запускать линтер в терминале с помощью команды `./gradlew ktlint`. Так же он будет отрабатывать на GitHub при push'ах в ваш репозиторий. **Прежде чем сдавать домашнее задание, убедитесь, что код успешно проходит проверку.** ## Этап 1 - до вечера пятницы (23.07.21) Необходимо создать экран с `RecyclerView`. Список должен поддерживать 4 типа View Type: - Header с вашей ФИО + закругленное изображение. По нажатию на кнопку `GitHub` должен открываться ваш GitHub - Элемент с информацией о вашем проекте - Header с названием "Навыки" - Элемент содержащий информацию: название навыка + опыт владения (значения: меньше года, год, два года, более двух лет и т.д.) Поскольку про работу с сетью ещё не рассказывали, предполагается, что данные будут сгенерированы внутри приложения. Внешний вид первого экрана: <kbd> ![](https://i.imgur.com/c9cT9ED.png) </kbd> ## Этап 2 - до вечера понедельника (26.07.21) Необходимо создать экран с фильтрами по навыкам и кнопкой "Применить". Переход на данный экран осуществляется нажатием на ярлык фильтра в header'е с текстом "Навыки". Принцип работы фильтров: при выборе опции "Все", у нас автоматически меняются значения остальных фильтров в соответствии со значением опции "Все". Если мы убираем галочку из какой-то из опций, при условии что все остальные опции тоже выбраны, то галочка из опции "Все" слетает. Подобным образом, если мы выбираем все опции, то в опцию "Все" автоматически подставляется галочка. После выбора необходимых фильтров и нажатия на кнопку "Применить" мы должны вернуться на первый экран, где к списку будут применены выбранные фильтры. Так же ярлык фильтра должен быть подсвечен зелёной точкой, если не выбрана опция "Все". При смене ориентации экрана, должны сохраняться выбранные фильтры. Внешний вид экрана с фильтрами: <kbd> ![](https://i.imgur.com/DfynhV1.png) </kbd> Внешний вид первого экрана, когда применены фильтры: <kbd> ![](https://i.imgur.com/cMKsAyx.png) </kbd>