Android Studio: Добавление товаров в корзину

Добавление товаров в корзину

Для добавления товаров в общую корзину используется статический список, обеспечивающий постоянный доступ к нему из любого места приложения без потери данных. При нажатии кнопки «Добавить в корзину» идентификатор товара добавляется в этот список. На странице корзины список перебирается, и все товары отображаются на экране.

Модель хранения списка товаров

В папку 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);

Разработано приложение с функционалом добавления товаров в корзину и отображения её содержимого. В дальнейшем можно добавить базу данных и систему оплаты.

Что будем искать? Например,программа