Добавление товаров в корзину
Для добавления товаров в общую корзину используется статический список, обеспечивающий постоянный доступ к нему из любого места приложения без потери данных. При нажатии кнопки «Добавить в корзину» идентификатор товара добавляется в этот список. На странице корзины список перебирается, и все товары отображаются на экране.
Модель хранения списка товаров
В папку module добавляется класс Order со статическим полем – множеством (Set) itemsId для хранения идентификаторов товаров (тип Integer). Использование множества предотвращает дубликаты.
public class Order {
public static Set<Integer> itemsId = new HashSet<>();
}
Обработка нажатия кнопки «Добавить в корзину»
В CoursePage создается публичный метод addToCart(View view), вызываемый при нажатии кнопки «Добавить в корзину». Идентификатор товара (itemId), полученный через Intent, добавляется в itemsId.
public void addToCart(View view) {
Order.itemsId.add(itemId); // itemId получен из Intent
Toast.makeText(this, "Добавлено", Toast.LENGTH_LONG).show();
}
В CourseAdapter itemId передается в новую Activity:
// ... существующий код ...
intent.putExtra("courseId", itemId);
// ... существующий код ...
В Activity страницы курса получаем itemId:
int itemId = getIntent().getIntExtra("courseId", 0);
Использование коллекции Set
Коллекция Set исключает необходимость проверки на дубликаты перед добавлением.
Страница корзины
Создается новая Activity – OrderPage для отображения корзины.
Кнопка перехода в корзину
Добавляется кнопка «Корзина». Её обработчик запускает OrderPage через Intent. В MainActivity создается метод openShoppingCart:
public void openShoppingCart(View view) {
Intent intent = new Intent(this, OrderPage.class);
startActivity(intent);
}
Дизайн и отображение товаров
Дизайн OrderPage аналогичен главной странице, за исключением отсутствия жирного заголовка. ListView отображает товары из корзины с помощью ArrayAdapter. Множество itemsId преобразуется в массив. Вместо идентификаторов выводятся названия курсов из списка fullCoursesList.
// ... получение списка курсов fullCoursesList
List<String> courseTitles = new ArrayList<>();
for (Course course : fullCoursesList) {
if (Order.itemsId.contains(course.getId())) {
courseTitles.add(course.getTitle());
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, courseTitles);
orderListView.setAdapter(adapter);
Разработано приложение с функционалом добавления товаров в корзину и отображения её содержимого. В дальнейшем можно добавить базу данных и систему оплаты.