Важно: ознакомьтесь со ссылками, представленными на главной странице репозитория с домашними заданиями.
Важно: если у вас что-то не получилось, оформите Issue согласно правилам.
- Откройте ваш проект с предыдущего ДЗ.
- Сделайте необходимые коммиты.
- Сделайте push. Убедитесь, что ваш код появился на GitHub.
- Ссылку на ваш проект отправьте в личном кабинете на сайте netology.ru.
- Задачи, отмеченные как необязательные, можно не сдавать. Это не повлияет на получение зачёта. В этом ДЗ все задачи обязательные.
Поскольку вы делаете приложение с гораздо бóльшими функциональными возможностями, чем делают лекторы, то придётся дописать часть логики (по отношению к лекции).
Ваше приложение должно выглядеть так:
- При клике на like должна меняться не только картинка, но и число рядом с ней: лайкаете — увеличивается на 1, дизлайкаете — уменьшается на 1.
- При клике на share должно увеличиваться число рядом: 10 раз нажали на share — +10.
- Если количество лайков, share или просмотров перевалило за 999, должно отображаться 1K и т. д., а не 1 000. Предыдущие функции должны работать: если у поста было 999 лайков и вы нажали like, то должно стать 1К, если убрали лайк, то снова 999.
Обратите внимание:
- 1.1К отображается по достижении 1 100.
- После 10К сотни перестают отображаться.
- После 1M сотни тысяч отображаются в формате 1.3M.
- Подумайте, можно ли это вынести в какую-то функцию вместо того, чтобы хранить эту логику в
Activity
.
Опубликуйте изменения в вашем проекте на GitHub. Убедитесь, что apk собирается с помощью GitHub Actions и при установке в эмуляторе приложение работает корректно.
В качестве результата пришлите ссылку на ваш GitHub-проект в личном кабинете студента на сайте netology.ru.
Исследование поведения системы — важная часть работы разработчика.
До этого мы устанавливали OnClickListener
только на один View.
А если мы установим разные Listener на View, которые пересекаются: на ConstraintLayout
, который содержит все остальные View, и на кнопку Like
?
- Установите обработчики
OnClickListener
наbinding.root
иbinding.like
. - Поставьте внутрь обработчиков точки останова.
- Запустите приложение в режиме отладки.
- Кликните на кнопку Like, на кнопку с тремя точками (на ней пока нет обработчика), на текст, на аватар.
- Установите обработчик
OnClickListener
на аватар и кликните по нему снова.
В качестве результата пришлите ответы на следующие вопросы в личном кабинете студента на сайте netology.ru:
- Какой из обработчиков сработал при клике на кнопку Like?
- Сработал ли обработчик на
binding.root
при клике на кнопку с тремя точками? - Сработал ли обработчик на
binding.root
при клике на текст? - Сработал ли обработчик на
binding.root
при клике на аватар до установки на avatar собственного обработчика? - Сработал ли обработчик на
binding.root
при клике на аватар после установки на avatar собственного обработчика?
Попробуйте выявить закономерность: когда срабатывает обработчик на контейнере, а когда нет.
Если не получается работать с отладчиком или ставить точки останова, добавьте в каждый обработчик по println с разным текстом. Если при нажатии текст будет выводиться в LogCat, то обработчик был вызван. Если текста не будет, значит обработчик вызван не был.
Важно: не нужно мержить эти «тесты» в master и заливать на GitHub.