android listview 每行的金额 求总和
PHP中文网
PHP中文网 2017-04-17 17:49:42
0
4
496

我用listview 把一些数据通过simpleAdapter 展示出来。 详情如截图

加减 按钮是修改数量。 与此同时,右边的 和 也会随着数量的更改而 更新。

java代码 已经测试过。 目前加减和一切正常。

int cal_quantity;

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

    List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();

    final String name[]={"apple","orange","pear"};
    final String quantity[]={"1","2","3"};
    final String price[]={"5","10","2"};

    for(int i=0;i<name.length;i++){
        HashMap<String, String> map = new HashMap<>();
        map.put("name",name[i]);
        map.put("quantity",quantity[i]);
        map.put("price",price[i]);
        aList.add(map);
    }

    String[] from = {"name","quantity","price"};
    int[] to = {R.id.name,R.id.quantity,R.id.price};

    SimpleAdapter adapter = new SimpleAdapter(this, aList, R.layout.main7, from, to){
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            View v = super.getView(position, convertView, parent);
            final TextView tv_quantity=(TextView)v.findViewById(R.id.quantity);
            final TextView tv_price=(TextView)v.findViewById(R.id.price);
            final TextView tv_total=(TextView)v.findViewById(R.id.total);

            final int get_quantity = Integer.parseInt(tv_quantity.getText().toString());
            final double get_price= Double.parseDouble(tv_price.getText().toString());
            final double get_total=get_quantity*get_price;
            tv_total.setText(get_total+"");

            Button minus=(Button)v.findViewById(R.id.minus);
            minus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    cal_quantity=Integer.parseInt(tv_quantity.getText().toString());
                    if(cal_quantity!=1){
                        cal_quantity=cal_quantity-1;
                    }
                    tv_quantity.setText(cal_quantity+"");
                    double get_total=cal_quantity*get_price;
                    tv_total.setText(get_total+"");
                }
            });

            Button plus=(Button)v.findViewById(R.id.plus);
            plus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    cal_quantity=Integer.parseInt(tv_quantity.getText().toString());
                    cal_quantity=cal_quantity+1;
                    tv_quantity.setText(cal_quantity+"");
                    double get_total=cal_quantity*get_price;
                    tv_total.setText(get_total+"");
                }
            });
            return v;
        }
    };

    ListView listView = (ListView) findViewById(R.id.listview);
    listView.setAdapter(adapter);

}

xml - listview和底部的总和 textview分开

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main8"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.yu.singleton.Main8Activity"
android:orientation="vertical">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_weight="0.3"
    android:layout_height="match_parent">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listview" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:background="@android:color/holo_blue_dark"
    android:layout_weight="0.7"
    android:layout_height="match_parent">

    <TextView
        android:text="Total"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        android:textAlignment="center"
        android:textSize="36sp" />
</LinearLayout>
</LinearLayout>

**那么我的问题是如何把每一排最右边的 Textview 值 加起来 ,然后再底部展示出总和? 我知道大概是用循环,但是实际操作完全没有头绪。
请大神们指点**

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
黄舟

Je vais ajouter à la réponse de @mw2972
Comme le prix total n'est lié qu'aux données initiales et à chaque opération, vous pouvez conserver une variable de prix total Activity dans totalPrice, puis la donner lors de l'initialisation. la liste Une valeur lui est attribuée, et vous pouvez toujours connaître le prix total de la liste actuelle en modifiant sa valeur à chaque fois que vous cliquez sur l'opération d'addition ou de soustraction.

Moment d'initialisation : lorsque vous attribuez les données de la liste à l'adaptateur, il suffit de parcourir les données une fois pour calculer le prix total.
Moment de modification : modifiez en cliquant sur l'opération d'addition et de soustraction, et mettez à jour le prix total. en même temps TextViewAffichez simplement le contenu.

Enfin, mettre Adapter dans Activity est en fait une mauvaise habitude.

左手右手慢动作

Utilisez eventBus ou RxBus

左手右手慢动作

Il est préférable de séparer les données et l'affichage, et de ne pas se fier au texte de l'interface comme source de données.
En cliquant sur les boutons d'ajout et de soustraction, vous devez modifier la valeur du tableau de quantités, puis mettre à jour l'interface

La somme est le prix x quantité de chaque ligne, puis additionnez-la, puis mettez à jour le texte ci-dessous

洪涛

Tout d'abord, modifiez les trois tableaux de quantité, de prix et de nom en variables membres d'activité pour vous assurer que différentes vues peuvent y accéder.
Ensuite, modifiez chaque méthode onClick. Puisque vous avez désormais accès aux quantités et aux prix unitaires de tous les articles, le prix total n’est pas difficile à calculer.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal