购物车中计算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
- 购物车中计算checkBox选中总价功能的实现
- 购物车 结算功能,选中勾选状态可以显示所有选中的总价还有选中的数量,未选中不进行计算,删除功能
- 原生JS实现购物车的添加删除,以及总价计算的功能
- vue购物车总价计算
- 购物车加减计算总价
- 实现购物车多物品数量 总价计算
- JQuery购物车多物品数量的加减+总价计算
- 模仿购物车实现ListView中商品数量的添加以及总价的调整
- RN的购物车实现( 数量,单价,总价,总数 )
- JQuery 实现购物栏物品的添加与删除 总价计算案例
- 实现购物车结算功能:批量/全部删除,全选,单价/总价,数量增减,页面隐藏/显示
- 购物车 全选 总价
- 动态计算购物车总价(数量可选),nextSibling属性
- HTML 购物车计算总价+添加或者减少商品数量
- Js写购物车全选全不选计算单价总价代码
- jquery实现checkbox选中功能
- JavaScript实现购物车计算价格功能
- 购物车的简单逻辑实现之全选,反选,总价的改变
- Android4.0运行含有Toolbar的项目出错
- LoopBack操作钩子过滤数据
- nrf51822 --- 1拖8实验(1)
- 函数声明中地址引用的作用
- Go语言为什么这么流行?
- 购物车中计算checkBox选中总价功能的实现
- js substring()字符串截取函数
- Naive Bayes
- Root Mean Squared Error (RMSE)
- 证书 描述文件的安装
- ubuntu下设置开机自启动项
- JS实现带导航城市列表以及输入搜索功能
- Java中的包与访问权限的控制
- 求点A在直线B上的投影点