购物车中计算checkBox选中总价功能的实现

来源:互联网 发布:淘宝图片护盾入口 编辑:程序博客网 时间:2024/05/16 11:23

今天实现的知识点和listview+checkBox的差不多,两个一般是连在一起用的,listview+checkBox的全选,批量删除功能可以看我的另一篇博客:http://blog.csdn.net/yu_er_/article/details/51232868。如果这个看懂了,那么今天的问题就迎刃而解了。在做购物车的功能时常常会用到计算checkBox选中的总价格。

效果图:


我没选中一个都会把总价计算出来显示在最下面。

我的代码上面在重要的地方都做了注释,我就不多做解释啦。

mainActivity:

package com.example.allselect;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.TextView;import java.util.ArrayList;import java.util.List;import java.util.Map;public class MainActivity extends AppCompatActivity {    MyListView listView;    static Adapter adapter;    CheckBox cb_cart_all;    static Float zongjia;    static TextView tv_cart_Allprice_1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv_cart_Allprice_1=(TextView)findViewById(R.id.tv_cart_Allprice_1);        listView=(MyListView)findViewById(R.id.listview);        cb_cart_all=(CheckBox)findViewById(R.id.cb_cart_all);        //点击全选按钮        cb_cart_all.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                if (isChecked){                    //全选                    adapter.setListDataFocuseAble();                    jisuanZongJia();                }else {                    //取消选择                    adapter.setListDataUnFocuseAble();                    jisuanZongJia();                }                adapter.notifyDataSetChanged();            }        });        adapter=new Adapter(this);        listView.setAdapter(adapter);        adapter.notifyDataSetChanged();        init();    }    //加载数据    public void init(){        List<Shoucang> listdata=new ArrayList<Shoucang>();        for(int i=0;i<5;i++){            Shoucang shoucang=new Shoucang();            shoucang.setDrugName("第"+i+"条");            shoucang.setDrugmoney(""+i*10);            //有一个id用于删除和向后台传递数据            shoucang.setShoucangId("" +(199+i));            shoucang.setDrugFlag(3);            listdata.add(shoucang);        }        adapter.setListData(listdata);    }    //计算选中的总价    static public void jisuanZongJia(){        final List<Map<String, String>> selectData = getSelectIDList();        float s = 0;        for (int i = selectData.size() - 1; i >= 0; i--) {            s+= Float.valueOf(selectData.get(i).get("zongjia"));        }        zongjia = s;        shoppingCartSetTotalPrice(zongjia);    }    //设置总价    public static void shoppingCartSetTotalPrice(float price){        tv_cart_Allprice_1.setText("" + price);    }    //CB点击    public static void shoppingCartRefush(List<Shoucang> listDataRec){        jisuanZongJia();    }        static public List<Map<String,String>> getSelectIDList(){        return adapter.getselectData();    }}
activity_mian.xml:

这里面布局类的东西和listview+checkBox的东西是一样的,所以有需要的可以到那篇文章里面找,网址在文章开头。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <RelativeLayout        android:id="@+id/l1"        android:layout_width="match_parent"        android:layout_height="40dp"        android:background="#00c168">        <ImageView            android:id="@+id/backImage"            android:onClick="exit"            android:layout_width="wrap_content"            android:layout_height="23dp"            android:src="@drawable/back"            android:layout_centerVertical="true"            />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="列表"            android:layout_centerHorizontal="true"            android:layout_centerVertical="true"            android:paddingRight="15dp"            android:layout_gravity="center_vertical"            android:textColor="#FFFFFF"            android:textSize="20dp"            />    </RelativeLayout>    <ScrollView        android:layout_above="@+id/view"        android:layout_below="@id/l1"        android:layout_width="match_parent"        android:layout_height="match_parent">        <RelativeLayout            android:id="@+id/main_list_shoucang"            android:layout_width="match_parent"            android:layout_height="wrap_content">            <com.example.allselect.MyListView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:id="@+id/listview"/>        </RelativeLayout>    </ScrollView>    <View        android:id="@+id/view"        android:layout_width="match_parent"        android:layout_height="1dp"        android:layout_above="@+id/bottom"/>    <RelativeLayout        android:id="@+id/bottom"        android:background="#ffffff"        android:layout_width="match_parent"        android:layout_height="60dp"        android:layout_alignParentBottom="true"        android:orientation="horizontal" >        <CheckBox            android:layout_centerVertical="true"            android:scaleX="0.75"            android:scaleY="0.75"            android:id="@+id/cb_cart_all"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="4dp"            android:text="全选"            android:textSize="17dp"            android:textColor="#191919"            style="@style/CustomCheckboxTheme" />        <RelativeLayout            android:layout_marginRight="15dp"            android:layout_centerVertical="true"            android:layout_alignParentRight="true"            android:layout_width="wrap_content"            android:gravity="center_vertical"            android:layout_height="wrap_content">            <TextView                android:id="@+id/text2"                android:layout_centerVertical="true"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="总价:"/>            <TextView                android:id="@+id/tv_cart_Allprice_1"                android:layout_centerVertical="true"                android:layout_toRightOf="@+id/text2"                android:gravity="center_vertical"                android:layout_width="200dp"                android:layout_height="40dp"                android:textSize="20dp"/>        </RelativeLayout>    </RelativeLayout></RelativeLayout>
Adapter:

package com.example.allselect;import android.content.Context;import android.content.SharedPreferences;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Adapter extends BaseAdapter{    List<Map<String,String>> sd;    Map<String,String> selectDataItem;    private Context context;    SharedPreferences sp;    private List<Shoucang> listData=new ArrayList<Shoucang>();    public Adapter(Context context) {        super();        sp =context.getSharedPreferences("shop_shoucang_data", Context.MODE_PRIVATE);        this.context = context;    }    public List<Shoucang> getListData() {        return listData;    }    public void setListData(List<Shoucang> listData) {        this.listData = listData;    }    //2显示checkBox并选中,3显示但未选中    public void setListDataUnFocuseAble(){        for(int idx = 0;idx < this.listData.size();idx++){            this.listData.get(idx).setDrugFlag(3);        }    }    public void setListDataFocuseAble(){        for(int idx = 0;idx < this.listData.size();idx++){            this.listData.get(idx).setDrugFlag(2);        }    }    @Override    public int getCount() {        return listData.size();    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(final int position, View view, ViewGroup parent) {        DrugListHolder holder=null;        if(view==null){            holder=new DrugListHolder();            view=LayoutInflater.from(context).inflate(R.layout.shoucang_druglist_item, null);            holder.itemName  =(TextView) view.findViewById(R.id.drugName);            holder.itemMoney  =(TextView) view.findViewById(R.id.drugmoney);            holder.cb_choice  =(CheckBox) view.findViewById(R.id.cb_choice_person_shoucang);            view.setTag(holder);        }else{            holder=(DrugListHolder) view.getTag();        }        holder.cb_choice.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                if(isChecked){                    listData.get(position).setDrugFlag(2);                    MainActivity.shoppingCartRefush(listData);                    Toast.makeText(context,"您选中了第"+position+"项",Toast.LENGTH_LONG).show();                }else{                    listData.get(position).setDrugFlag(3);                    MainActivity.shoppingCartRefush(listData);                    Toast.makeText(context, "您取消中了第" + position + "项", Toast.LENGTH_LONG).show();                }            }        });        //请求列表展示图        Shoucang Shoucang=listData.get(position);        //全选和取消选择        if(Shoucang.getDrugFlag()==2){           holder.cb_choice.setChecked(true);        }else if(Shoucang.getDrugFlag()==3){           holder.cb_choice.setChecked(false);        }        //ImageCacheUtil.getInstance().displayImage(context,holder.itemimage1,listData.get(position).getImgIv1());        holder.itemName.setText("" + Shoucang.getDrugName());        holder.itemMoney.setText("" + Shoucang.getDrugmoney());        final String shoucangId= listData.get(position).getShoucangId();        return view;    }    //列表数据    public final class DrugListHolder {        //列表名        TextView itemName;        TextView itemMoney;        CheckBox cb_choice;    }        public List<Map<String,String>> getselectData(){        sd = new  ArrayList<Map<String,String>>();        if(this.listData.size() > 0){            for(int idx = 0;idx < this.listData.size();idx++){                if(this.listData.get(idx).getDrugFlag() == 2){                    selectDataItem = new HashMap<String,String>();                    selectDataItem.put("id",this.listData.get(idx).getShoucangId());                    selectDataItem.put("zongjia",String.valueOf(listData.get(idx).getDrugmoney()));                    sd.add(selectDataItem);                }            }        }        return sd;    }}
这个功能就这样实现了,每天记录一点点。



1 0