Практическая работа Expense Tracker
В данном практическом задании предлагается дописать существующий проект-заготовку Android приложения для контроля личных финансов.
Советуем сначала скачать шаблон-заготовку проекта и открыть проект в Android Studio или IntelliJ IDEA.
Измените код существующих классов и интерфейсов, дополните разметку, ресурсы и манифест, чтобы приложение отвечало следущим требованиям:
- При запуске приложения (MainActivity – стартовая активность) показывается:
пустой список RecyclerView (@id/ef_expenses_rv
),
кнопка с возможностью добавить новую операцию (@id/add_fab
)
текстовоеполе @id/ef_current_balance_text
. В@id/ef_current_balance_text
отображается текущее значение баланса пользователя (сумма всех операций: доходы−расходы) с точностью до одного знака после точки. Это значение может быть отрицательным. - При нажатии на элемент
@id/add_fab
появляется диалоговое окно с@id/type_spinner
,@id/expense_amount_edit_text
и@id/add_button
. - Элемент
@id/type_spinner
позволяет выбрать одну из двух альтернатив (доход или расход), первый пункт выпадающего списка содержит строку «Income
» (без кавычек), второй пункт – «Expenses
». - Пользователь вводит натуральное число в
@id/expense_amount_edit_text
. Гарантируется, что введённое пользователем число не превышает10^{4}
. - После нажатия на
@id/add_button
диалоговое окно закрывается, при этом очередная операция (доход или расход) добавляется в конец списка. В@id/ef_current_balance_text
обновляется текущее значение баланса пользователя. - Каждый элемент списка содержит в себе информацию о типе операции («Income»/«Expenses»), дате добавления информации о ней в приложение (в формате «
dd.MM.yyyy
») и её сумму, это отображается в текстовых полях с идентификаторами@id/expense_type_text
,@id/expense_date_text
и@id/expense_amount_text
соответственно. - При длительном нажатии на любой элемент списка появляется контекстное меню, позволяющее удалить этот элемент (Delete) или дублировать его (Duplicate). При выборе опции с текстом «Duplicate» в конец списка помещается элемент с совпадающими значениями полей.
- При повороте экрана устройства данные должны сохраняться.
Рекомендуется использовать Android Studio Dolphin 2021.3.1. В проекте gradle version 7.5, gradle plugin version 7.3.0.
Сдать в систему тестирования необходимо zip архив, в корневом каталоге которого располагается дополненный проект Android Studio/IntelliJ IDEA. После загрузки zip архива приложение будет запущено в системе автоматического тестирования для проверки на соответствие техническому заданию.
Допускается использовать язык Java и/или Kotlin. При сборке проекта вcе изменения в файле build.gradle будут проигнорированы – будут использованы зависимости только из шаблона-заготовки; не изменяйте пакет приложения.
Тестирование одной посылки может длиться до 5 минут, после завершения тестирования будет доступна информация об общем числе тестов и числе пройденных тестов. Количество посылок в систему не ограничено. Штраф за повторные попытки не начисляется.