Добавление элементов корзины в базу данных и получение - PullRequest
0 голосов
/ 11 октября 2018

У меня есть три таблицы в mySQL, а именно user, restaurant, cartlist.

здесь user table предназначена для сохранения пользовательских данных.Ресторанный стол предназначен для сохранения деталей, цены и количества блюд.В корзину добавить детали ресторана.Теперь, когда конкретный пользователь входит в приложение, я хочу, чтобы элементы списка конкретного пользователя были добавлены в список.но я получаю информацию о целых пользователях, которые добавили товары в корзину.

show.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String selectQuery = "SELECT * FROM restaurants";
            SQLiteDatabase database = DatabaseManager.getInstance().openDatabase();
            Cursor cursor = database.rawQuery(selectQuery, null);

            if (cursor.moveToFirst()) {
                do {
                    ProductModel productModel = new ProductModel();
                    productModel.setID(Integer.parseInt(cursor.getString(0)));

                    productModel.setName(cursor.getString(1));
                    productModel.setMealname(cursor.getString(2));
                    productModel.setMealprice(cursor.getString(3));
                    productModel.setMealqty(cursor.getString(4));

                    products.add(productModel);

                } while (cursor.moveToNext());
            }

            cursor.close();
            DatabaseManager.getInstance().closeDatabase();

            adapter = new ProductAdapter(ProductList.this, R.layout.activity_cartlistview, products);
            listview.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }
    });

Carttable:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_checkout);

    lv_checkout = findViewById(R.id.lv_checkout);
    tv_totalamount = findViewById(R.id.tv_totalamount);
    btn_checkouttopayment = findViewById(R.id.btn_checkouttopayment);

    String selectQuery = "SELECT * FROM carttable";
    SQLiteDatabase database = DatabaseManager.getInstance().openDatabase();
    Cursor cursor = database.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()) {
        do {
            ProductModel productModel = new ProductModel();
            productModel.setID(Integer.parseInt(cursor.getString(0)));

            productModel.setName(cursor.getString(1));
            productModel.setMealname(cursor.getString(2));
            productModel.setMealprice(cursor.getString(3));
            productModel.setMealqty(cursor.getString(4));
            productModel.setMealtotal((Double.parseDouble(cursor.getString(3)) * Double.parseDouble(cursor.getString(4)) + ""));

            products.add(productModel);

        } while (cursor.moveToNext());
    }

    double totalPrices = 0;

    for (int i = 0; i < products.size(); i++) {

        totalPrices += Double.parseDouble(products.get(i).getMealtotal());
    }

    tv_totalamount.setText("Total Amount to be Paid : " + totalPrices + "");
    cursor.close();
    DatabaseManager.getInstance().closeDatabase();

    adapter = new ProductAdapter(this, R.layout.activity_cartlistview, products);
    lv_checkout.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

что нужно изменить в запросе?Дайте мне знать, ребята. TIA!

Ответы [ 2 ]

0 голосов
/ 11 октября 2018
do {
        ProductModel productModel = new ProductModel();
        productModel.setID(Integer.parseInt(cursor.getString(0)));

        productModel.setName(cursor.getString(1));
        productModel.setMealname(cursor.getString(2));
        productModel.setMealprice(cursor.getString(3));
        productModel.setMealqty(cursor.getString(4));
        productModel.setMealtotal((Double.parseDouble(cursor.getString(3)) * Double.parseDouble(cursor.getString(4)) + ""));

        products.add(productModel);

    }

Добавьте конструктор в ваш класс модели и введите его. Сохраняет несколько строк кода / читабельность.

do {
    products.add( new ProductModel(
    Integer.parseInt(cursor.getString(0)), 
    cursor.getString(1),
    cursor.getString(2),
    cursor.getString(3),
    cursor.getString(4),
    }

Строка: productModel.setMealtotal((Double.parseDouble(cursor.getString(3)) * Double.parseDouble(cursor.getString(4)) + ""));, кажется, содержит простое отношение, где "Общее количество еды = среднее количество * цена еды ", что также можно сделать в конструкторе ... это постоянный алгоритм и часть модели.

Вот модель (я добавил @Data, используя lombokчто делает все методы получения и установки при компиляции)

import lombok.Data;

@Data
public class ProductModel {
    private int id;
    private String name;
    private String mealName;
    private int mealPrice;
    private int mealQuantity;
    private int mealTotal;

    //Constructor...i.e. "new ProductModel(field1,field2...)" 
    public ProductModel(int id, String name, String mealName, int mealPrice, int mealQuantity) {
        this.id = id;
        this.name = name;
        this.mealName = mealName;
        this.mealPrice = mealPrice;
        this.mealQuantity = mealQuantity;
        this.mealTotal = mealPrice * mealQuantity;
    }
}
0 голосов
/ 11 октября 2018

Это потому, что выполняемый вами запрос идет к столу Ресторан и получает все записи из него.Из того, что я могу понять, Cartlist - название таблицы, в которую пользователь будет вводить информацию о конкретном ресторане.Итак, прямо сейчас вы вызываете все записи из таблицы Ресторанов, которые дадут вам список, независимо от того, кто его добавил.Возможно, вы захотите изменить запрос на что-то вроде

SELECT restaurant_name FROM cartlist WHERE userName = selected_User;

Теперь у вас есть название ресторана.Сохраните их и используйте по запросу.

SELECT * FROM restaurants WHERE restaurantsName = selected_restaurant_name;
...