Android Studio-每次单击按钮时如何在线性布局上生成新的textview

时间:2019-01-17 18:40:07

标签: java android

我有一个程序来显示烤肉串和鸡肉汉堡等不同产品的总价和数量

这是问题所在。无论它叫什么,我都有一个线性布局(或可滚动视图),它显示数量和总价,但不显示每一项。

例如,如果我单击Kebab Wrap 3次,然后单击Chicken Burger 3次,我将在可滚动视图中获得此信息:

quantity = 3
Total price = 26.94

但是,我想要的是它出现

3 Kebab Wrap @£4.99 = £14.97;
3 Chicken Burger @3.99 = £11.97;
Total = £26.94

问题是所有商品彼此共享数量和价格,这是错误的。我需要他们展示自己独特的数量,独特的总价,然后是所有商品的总价。

因此要明确一点:每次单击按钮项(例如Kebab Wrap)时,我想要的是可滚动视图以存储我的产品。

我尝试了几件事,但是我不断出错。请帮助我

项目在哈希图中。我将向您显示以下代码

package com.example.aa1172.the_improved_almighty_project;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.HashMap;
import java.util.Map;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    static  HashMap<String, Double> menu = new HashMap<String, Double>();
    public TextView tally;

    static final HashMap<String, Integer> list = new HashMap<>();


    public static float round2(float number, int scale) {
        int pow = 10;
        for (int i = 1; i < scale; i++)
            pow *= 10;
        float tmp = number * pow;
        return ( (float) ( (int) ((tmp - (int) tmp) >= 0.5f ? tmp + 1 : tmp) ) ) / pow;
    }

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


        menu.put("Cheese Burger", 1.99);
        menu.put("Kebab Wrap", 4.99);
        menu.put("Mayo Chicken", 0.99);
        menu.put("Lamb Doner", 3.99);
        menu.put("Biscuits", 1.99);
        menu.put("Ice Cream", 1.49);
        menu.put("Chicken Burger", 3.99);
        menu.put("BBQ Chicken Burger", 3.49);
        menu.put("Zinger Burger", 2.99);


        Button varKebab = (Button) findViewById(R.id.Kebab);
        Button varIceCream = (Button) findViewById(R.id.IceCream);
        Button varBiscuits = (Button) findViewById(R.id.Biscuits);
        Button varLambDoner = (Button) findViewById(R.id.LambDoner);
        Button varChickenBurger = (Button) findViewById(R.id.ChickenBurger);
        final TextView varTotal = (TextView) findViewById(R.id.Total);
        final TextView varTotalPrice = (TextView) findViewById(R.id.TotalPrice);
        final LinearLayout varItems = (LinearLayout) findViewById(R.id.Items);


        final HashMap<String, Integer> list = new HashMap<>();

        varKebab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (menu.containsKey("Kebab Wrap")) {
                    Integer quantity = list.get("Kebab Wrap");

                    if (quantity == null) {
                        quantity = 0;
                    }
                    quantity++;
                    list.put("Kebab Wrap", quantity);
                }
                varTotal.setText(Integer.toString(list.get("Kebab Wrap")));
                float tally = 0;
                for (Map.Entry<String, Integer> entry : list.entrySet()) {
                    String name = entry.getKey();
                    int quantity = entry.getValue();
                    double price = menu.get(name);
                    double total = quantity * price;
                    tally += total;
                    varTotalPrice.setText(Float.toString(round2(tally, 2)));

                }

            }
        });

        varIceCream.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (menu.containsKey("Ice Cream")) {
                    Integer quantity = list.get("Ice Cream");

                    if (quantity == null) {
                        quantity = 0;
                    }
                    quantity++;
                    list.put("Ice Cream", quantity);
                }
                varTotal.setText(Integer.toString(list.get("Ice Cream")));
                float tally = 0;
                for (Map.Entry<String, Integer> entry : list.entrySet()) {
                    String name = entry.getKey();
                    int quantity = entry.getValue();
                    double price = menu.get(name);
                    double total = quantity * price;
                    tally += total;
                    varTotalPrice.setText(Float.toString(round2(tally, 2)));

                }

            }
        });

        varBiscuits.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (menu.containsKey("Biscuits")) {
                    Integer quantity = list.get("Biscuits");

                    if (quantity == null) {
                        quantity = 0;
                    }
                    quantity++;
                    list.put("Biscuits", quantity);
                }
                varTotal.setText(Integer.toString(list.get("Biscuits")));
                float tally = 0;
                for (Map.Entry<String, Integer> entry : list.entrySet()) {
                    String name = entry.getKey();
                    int quantity = entry.getValue();
                    double price = menu.get(name);
                    double total = quantity * price;
                    tally += total;
                    varTotalPrice.setText(Float.toString(round2(tally, 2)));



                }

            }
        });

        varLambDoner.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (menu.containsKey("Lamb Doner")) {
                    Integer quantity = list.get("Lamb Doner");

                    if (quantity == null) {
                        quantity = 0;
                    }
                    quantity++;
                    list.put("Lamb Doner", quantity);
                }
                varTotal.setText(Integer.toString(list.get("Lamb Doner")));
                float tally = 0;
                for (Map.Entry<String, Integer> entry : list.entrySet()) {
                    String name = entry.getKey();
                    int quantity = entry.getValue();
                    double price = menu.get(name);
                    double total = quantity * price;
                    tally += total;
                    varTotalPrice.setText(Float.toString(round2(tally, 2)));



                }


            }
        });


        varChickenBurger.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (menu.containsKey("Chicken Burger")) {
                    Integer quantity = list.get("Chicken Burger");

                    if (quantity == null) {
                        quantity = 0;
                    }
                    quantity++;
                    list.put("Chicken Burger", quantity);
                }
                varTotal.setText(Integer.toString(list.get("Chicken Burger")));
                float tally = 0;
                for (Map.Entry<String, Integer> entry : list.entrySet()) {
                    String name = entry.getKey();
                    int quantity = entry.getValue();
                    double price = menu.get(name);
                    double total = quantity * price;
                    tally += total;

                    varTotalPrice.setText(Float.toString(round2(tally, 2)));










                }

            }
        });


















    }

}

下面是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/Kebab"
        android:layout_width="87dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:text="Kebab"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.028"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.262" />

    <Button
        android:id="@+id/ChickenBurger"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Chicken Burger"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.703" />

    <Button
        android:id="@+id/IceCream"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Ice Cream"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.029"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.56" />

    <Button
        android:id="@+id/Biscuits"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Biscuits"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.028"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.413" />

    <Button
        android:id="@+id/LambDoner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Lamb Doner"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.031"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.85" />

    <ScrollView
        android:id="@+id/Log"
        android:layout_width="217dp"
        android:layout_height="108dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="68dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="68dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.018">

        <LinearLayout
            android:id="@+id/Items"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/Total"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Quantity"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHorizontal_bias="0.786"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.883" />

            <TextView
                android:id="@+id/TotalPrice"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:layout_weight="1"
                android:text="Price"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.672"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.349" />
        </LinearLayout>
    </ScrollView>

</android.support.constraint.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

您应该使用带有列表的回收站视图并更新列表onClick,然后在回收站视图适配器上调用notifyDataSetChanged来添加新项目。

请检查this examplethis