Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio Java-购物车应用程序,共有问题_Java_Android - Fatal编程技术网

Android Studio Java-购物车应用程序,共有问题

Android Studio Java-购物车应用程序,共有问题,java,android,Java,Android,对于我的uni任务,我必须修改一段代码,我们将创建一个应用程序,该应用程序将项目的总成本相加并用Java显示出来,我对移动开发非常陌生。除了合计和显示成本之外,我们还收到了所有代码。我在顶部添加了几个变量和一个total()方法 目前,当应用程序运行时,它将从项目中获取所有价格,并根据需要添加/减去它们,但它添加和减去的金额是错误的(所有内容都会添加和减去1.5,而不是创建对象时定义的价格),我不确定原因。有什么想法吗 如果你还需要其他课程的信息,请告诉我 谢谢 编辑:我希望这个应用程序有4行,

对于我的uni任务,我必须修改一段代码,我们将创建一个应用程序,该应用程序将项目的总成本相加并用Java显示出来,我对移动开发非常陌生。除了合计和显示成本之外,我们还收到了所有代码。我在顶部添加了几个变量和一个
total()
方法

目前,当应用程序运行时,它将从项目中获取所有价格,并根据需要添加/减去它们,但它添加和减去的金额是错误的(所有内容都会添加和减去1.5,而不是创建对象时定义的价格),我不确定原因。有什么想法吗

如果你还需要其他课程的信息,请告诉我

谢谢

编辑:我希望这个应用程序有4行,每行包含一个与甜点对象相关的图像,显示甜点的文本,然后是一个增减数量的按钮。我还想显示当前选择的所有甜点的总成本,例如,如果选择了1个甜甜圈,选择了2个饼干,预计总成本应显示为3.88英镑。无论何时添加或减去另一个甜点,总数都应更新

我收到的代码具有列表功能以及递增和递减功能,因此我的任务是向对象添加价格,并使其合计

代码:

Main-Acitvity.java

package com.example.annascott.buttondemo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

// quantity of desert
    int desertNumber;

    Dessert currentDessert;
    double totalAmount = 0;

    // Create an ArrayList of Dessert objects
    final ArrayList<Dessert> desserts = new ArrayList<Dessert>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //CREATE THE DESSERT OBJECTS
        desserts.add(new Dessert("Donut", 0, R.drawable.doughnut, 1.99));
        desserts.add(new Dessert("Cookie", 0, R.drawable.cookie, 0.99));
        desserts.add(new Dessert("PieceOfCake", 0, R.drawable.piece_of_cake, 2.99));
        desserts.add(new Dessert("Pastry", 0, R.drawable.pastry, 1.50));


        // Create an {@link DessertAdapter}, whose data source is a list of
        // {@link Dessert}s. The adapter knows how to create list item views for each item
        // in the list.
        DesertAdapter flavorAdapter = new DesertAdapter(this, desserts);

        // Get a reference to the ListView, and attach the adapter to the listView.
        ListView listView = (ListView) findViewById(R.id.listview_dessert);
        listView.setAdapter(flavorAdapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                switch (i) {
                    case 0:
                        Intent donut = new Intent(MainActivity.this, Donut.class);
                        startActivity(donut);
                        break;
                    case 1:
                        Intent cookie = new Intent(MainActivity.this, Cookie.class);
                        startActivity(cookie);
                        break;
                    case 2:
                        Intent pieceOfCake = new Intent(MainActivity.this, PieceOfCake.class);
                        startActivity(pieceOfCake);
                        break;
                    case 3:
                        Intent pastry = new Intent(MainActivity.this, Pastry.class);
                        startActivity(pastry);
                        break;
                }
            }
        });
    }


    public void Decrement(View view) {


        LinearLayout parentRow = (LinearLayout) view.getParent();

        TextView quantityView = (TextView) parentRow.findViewById(R.id.dessert_number);
        String quantityString = quantityView.getText().toString();
        desertNumber = Integer.parseInt(quantityString);
        desertNumber -= 1;

        if (desertNumber < 0) {
            desertNumber = 0;
            Toast.makeText(MainActivity.this, "Can not be less than 0",
                    Toast.LENGTH_SHORT).show();
        }
        quantityView.setText(String.valueOf(desertNumber));

        total(false);
    }

    public void Increment(View view) {




        // Set the dessert amount to the text view
        LinearLayout parentRow = (LinearLayout) view.getParent();

        TextView quantityView = (TextView) parentRow.findViewById(R.id.dessert_number);
        String quantityString = quantityView.getText().toString();
        desertNumber = Integer.parseInt(quantityString);
        desertNumber += 1;
        quantityView.setText(String.valueOf(desertNumber));
        total(true);


    }




    // Add the total cost of the items to be bought
    public void total(boolean change) {

        //get all of the desserts
        for (int i = 0; i < desserts.size(); i++) {
            currentDessert = desserts.get(i);
        }

        // if increment add price else subtract
        TextView shoppingCartView = (TextView) findViewById(R.id.shopping_cart);
        if (change) {
            totalAmount += currentDessert.getMyPrice();
        } else {
            totalAmount -= currentDessert.getMyPrice();
        }


        shoppingCartView.setText(Double.toString(totalAmount));
    }
}

您的错误可能在total函数中

//get all of the desserts
 for (int i = 0; i < desserts.size(); i++) {
   currentDessert = desserts.get(i);
 }
//把所有的甜点都拿来
对于(int i=0;i

将最后一个条目分配给变量currentSweart,即值为1.5的油酥糕点,类似这样的情况如何:

    // Add the total cost of the items to be bought
    public void total(boolean change) {

        //get all of the desserts
        for (int i = 0; i < desserts.size(); i++) {
            currentDessert = desserts.get(i);
            if (change) {
                totalAmount += currentDessert.getMyPrice();
            } else {
                totalAmount -= currentDessert.getMyPrice();
            }
        }

        // if increment add price else subtract
        TextView shoppingCartView = (TextView) findViewById(R.id.shopping_cart);

        shoppingCartView.setText(Double.toString(totalAmount));
    }
//添加要购买的项目的总成本
公共无效总计(布尔值更改){
//把所有的甜点都拿来
对于(int i=0;i
但老实说,我不知道你们想做什么,你们有什么问题,或者某个输入的预期输出


话虽如此,我不知道你的代码出了什么问题,因为我不知道它首先应该做什么。如果/在寻求调试帮助时,请记下一些示例输入和预期输出。

您正在搜索total函数中的所有甜点

因此,您需要找到一种方法指定要将价格加成的价格


我会在代码前面的switch case语句中为每个按钮添加一个单击的布尔变量,但这不是唯一的方法。

是的,这似乎是问题所在,有没有解决方法?你试过调试它吗?我试过了,它会显示所有加在一起的项目价格的总和。很抱歉,缺少信息,我将编辑问题以添加更多信息我仍然不太明白需要做什么。。。如果你的意思是“总量(总和)所有数量大于0的物品的价格”,那么就这样说吧,但实际上,你的代码没有“保持每种沙漠类型的数量”的功能,因此我只能建议一个hashmap,其中每个甜点的数量都保存在甜点键下,这个
total()
函数被更改为遍历hashmap,并对值为
>0
的键的价格进行汇总(
off
似乎处于关闭状态。除沙子外,
沙漠价格可能更高。)
搜索所有
实际上是无条件迭代。看到问题中的
两个cookie的数量
为每个按钮“单击”一个布尔变量就不行了。
    // Add the total cost of the items to be bought
    public void total(boolean change) {

        //get all of the desserts
        for (int i = 0; i < desserts.size(); i++) {
            currentDessert = desserts.get(i);
            if (change) {
                totalAmount += currentDessert.getMyPrice();
            } else {
                totalAmount -= currentDessert.getMyPrice();
            }
        }

        // if increment add price else subtract
        TextView shoppingCartView = (TextView) findViewById(R.id.shopping_cart);

        shoppingCartView.setText(Double.toString(totalAmount));
    }