android端购物车的实现
来源:互联网 发布:emba mba 区别 知乎 编辑:程序博客网 时间:2024/05/18 00:15
本人最近工作不忙,所以没事就编写一些常用的demo发到网上,不是很难得技术,但是需要花费时间,需要的朋友可以直接拿来用,而且自己以后在项目中遇到可以直接拿来用。
效果图:
主Activity代码;
package com.example.aidlclicent;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ListView;import android.widget.TextView;public class GoodsActivity extends ActionBarActivityimplements OnClickListener, CompoundButton.OnCheckedChangeListener {private List<Product> productList;GoodsAdapter goodsAdapter;private ListView lv;private Button bt_confrim_buy;private TextView sum_goods_price;private CheckBox cb_all_select;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_goods);initView();initListDate();}private void initView() {lv = (ListView) findViewById(R.id.listView);bt_confrim_buy = (Button) findViewById(R.id.bt_confrim_buy);sum_goods_price = (TextView) findViewById(R.id.sum_goods_price);cb_all_select = (CheckBox) findViewById(R.id.cb_all_select);cb_all_select.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked) {//清空,原来数据sum = 0;for (Product product : productList) {product.setSelected(true);goodsAdapter.notifyDataSetChanged();sum += product.getSumPrice();}sum_goods_price.setText("¥" + String.valueOf(sum));} else {for (Product product : productList) {product.setSelected(false);goodsAdapter.notifyDataSetChanged();//sum =sum- product.getSumPrice();}//sum_goods_price.setText("¥" + String.valueOf(sum));sum_goods_price.setText("¥:0");}}});}public void confrimBuy(View view) {}private void initListDate() {productList = new ArrayList<>();for (int i = 0; i < 30; i++) {Product product = new Product();product.setName("商品" + i + "号");product.setNum(i);product.setPrice(i + 10);product.setSumPrice(i * (i + 10));productList.add(product);}goodsAdapter = new GoodsAdapter(this, productList);lv.setAdapter(goodsAdapter);goodsAdapter.setOnAddNum(this);goodsAdapter.setOnsunNum(this);goodsAdapter.setOnCheckedSelect(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.goods, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onClick(View v) {Object tag = v.getTag();switch (v.getId()) {// +case R.id.item_btn_add:int position = (Integer) tag;int num = productList.get(position).getNum();int price = productList.get(position).getPrice();num++;int sum = price * num;productList.get(position).setNum(num);productList.get(position).setSumPrice(sum);goodsAdapter.notifyDataSetChanged();updateSumPrice(position, price, 1);break;// -case R.id.item_btn_sub:int price1 = 0;int position1 = (Integer) tag;int num1 = productList.get(position1).getNum();if (num1 > 0) {num1--;price1 = productList.get(position1).getPrice();int sum1 = price1 * num1;productList.get(position1).setSumPrice(sum1);updateSumPrice(position1, price1, 0);}productList.get(position1).setNum(num1);goodsAdapter.notifyDataSetChanged();break;default:break;}}private void updateSumPrice(int position, int price1, int add) {boolean isSelected = productList.get(position).isSelected();if (isSelected && add == 1) {sum = sum + price1;sum_goods_price.setText("¥" + String.valueOf(sum));} else if (isSelected && add == 0) {sum = sum - price1;sum_goods_price.setText("¥" + String.valueOf(sum));}}int sum = 0;@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {int position = 0;if (buttonView.getTag() != null) {position = (int) buttonView.getTag();} else {return;}boolean isSelected = productList.get(position).isSelected();if (isChecked && !isSelected) {sum += productList.get(position).getSumPrice();productList.get(position).setSelected(true);} else if (!isChecked && isSelected) {sum = sum - productList.get(position).getSumPrice();productList.get(position).setSelected(false);}sum_goods_price.setText("¥" + String.valueOf(sum));}}适配器GoodsAdapter.java类
package com.example.aidlclicent;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.ImageButton;import android.widget.TextView;public class GoodsAdapter extends BaseAdapter {// 集合 ,存放ListView的商品实体类数据private List<Product> products;Context context;private View.OnClickListener addNum;private View.OnClickListener subNum;private OnCheckedChangeListener selectCheck;public void setOnAddNum(View.OnClickListener addNum) {this.addNum = addNum;}public void setOnsunNum(View.OnClickListener subNum) {this.subNum = subNum;}public void setOnCheckedSelect(OnCheckedChangeListener select) {this.selectCheck = select;}public GoodsAdapter(Context context,List<Product> products) {super();this.context = context;this.products = products;}@Overridepublic int getCount() {int ret = 0;if(products!= null){ret = products.size();}return ret;}@Overridepublic Object getItem(int position) {return products.get(position);}@Overridepublic long getItemId(int arg0) {return arg0;}@Overridepublic View getView(int position, View arg1, ViewGroup arg2) {View v =null;if(v!=null){v=arg1;}else{v = LayoutInflater.from(context).inflate(R.layout.goods_item,arg2,false);}ViewHolder viewHolder = (ViewHolder) v.getTag();if(viewHolder == null){viewHolder = new ViewHolder();viewHolder.item_btn_add = (ImageButton) v.findViewById(R.id.item_btn_add);viewHolder.item_btn_sub = (ImageButton) v.findViewById(R.id.item_btn_sub);viewHolder.item_product_name = (TextView) v.findViewById(R.id.item_product_name);viewHolder.item_product_num = (TextView) v.findViewById(R.id.item_product_num);viewHolder.item_product_price = (TextView) v.findViewById(R.id.item_product_price);viewHolder.item_priduct_sumPrice = (TextView) v.findViewById(R.id.sum_price);viewHolder.cb_select = (CheckBox) v.findViewById(R.id.cb_select);viewHolder.item_btn_add .setOnClickListener(addNum);viewHolder.item_btn_sub.setOnClickListener(subNum);viewHolder.cb_select.setOnCheckedChangeListener(selectCheck);v.setTag(viewHolder);}viewHolder.item_product_name.setText(products.get(position).getName());viewHolder.item_product_num.setText(String.valueOf(products.get(position).getNum()));viewHolder.item_product_price.setText(String.valueOf(products.get(position).getPrice()));viewHolder.item_priduct_sumPrice.setText("¥"+String.valueOf(products.get(position).getSumPrice()));boolean isSelected = products.get(position).isSelected();if(isSelected){viewHolder.cb_select.setChecked(true);}else if(!isSelected){viewHolder.cb_select.setChecked(false);;}viewHolder.item_btn_add.setTag(position);viewHolder.item_btn_sub.setTag(position);viewHolder.cb_select.setTag(position);return v;}private static class ViewHolder{ //商品名称,数量,总价 private TextView item_product_name; private TextView item_product_num; private TextView item_product_price; //增减商品数量按钮 private ImageButton item_btn_add; private ImageButton item_btn_sub; private TextView item_priduct_sumPrice; private CheckBox cb_select; }}godds.xml代码:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.auto.app.ui.MainActivity" > <TextView android:id="@+id/item_product_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_margin="10dp" android:text="商品名称" android:textColor="#000" /> <ImageButton android:id="@+id/item_btn_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#0000" android:src="@drawable/ic_launcher" android:layout_below="@+id/item_product_name" android:layout_marginLeft="10dp" /> <TextView android:id="@+id/item_product_num" android:text="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:textColor="#000" android:layout_margin="5dp" android:layout_toRightOf="@id/item_btn_add" android:layout_below="@id/item_product_name" /> <ImageButton android:id="@+id/item_btn_sub" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#0000" android:src="@drawable/ic_launcher" android:layout_below="@id/item_product_name" android:layout_toRightOf="@id/item_product_num" /> <TextView android:id="@+id/item_product_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_margin="10dp" android:text="0" android:textColor="#000" android:layout_alignParentRight="true" /> <TextView android:id="@+id/sum_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/item_product_num" android:layout_alignBottom="@+id/item_product_num" android:layout_alignParentRight="true" android:text="¥200" /> <CheckBox android:id="@+id/cb_select" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/item_product_name" android:layout_alignBottom="@+id/item_product_name" android:layout_alignRight="@+id/item_btn_sub" /></RelativeLayout>需要源码的同学请点击地址:http://download.csdn.net/detail/bighua_mm/9603420
1 0
- android端购物车的实现
- Android 购物车的实现
- android 购物车的实现
- Android-------------实现购物车
- Android实现购物车
- Android仿外卖购物车的实现
- Android仿外卖购物车的实现
- Android仿外卖购物车的实现
- Android 购物车功能的实现
- Android仿外卖购物车的实现
- Android--购物车的实现详解
- Android仿外卖购物车的实现
- android实现简单的购物车
- android 实现简单的一级购物车
- 购物车的实现
- 购物车的实现
- 购物车的实现
- 购物车的实现
- WCF服务开启失败的原因
- spring--入门
- JavaScript中setter和getter方法介绍
- SpringMVC框架使用注解执行定时任务
- 5.百度推送
- android端购物车的实现
- 欢迎使用CSDN-markdown编辑器
- 友盟登录 java.lang.ClassNotFoundException异常解决记录
- ExtJS的中法语千位分隔符
- 界面布局(二)
- 利用Try-Catch-Finally管理资源
- Particle for alexa smart home skill (3)
- Linux 文件与目录管理
- SuperMap iServer 8C(2017)在东方通TongWeb6.0中的安装部署