android 购物车
来源:互联网 发布:软件系统推广方案 编辑:程序博客网 时间:2024/05/22 06:30
这是效果图
上代码
主activity代码
——————————————我是分割线————————————————————
package activitytest.example.com.shopcar;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;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.ImageView;import android.widget.TextView;import com.baoyz.swipemenulistview.SwipeMenu;import com.baoyz.swipemenulistview.SwipeMenuCreator;import com.baoyz.swipemenulistview.SwipeMenuItem;import com.baoyz.swipemenulistview.SwipeMenuListView;import java.math.BigDecimal;import java.util.ArrayList;public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener { // 全选商品 private CheckBox mAllCkeck; // 总价钱 private TextView mAllMoney; private SwipeMenuListView mList; private ArrayList<GoodBean> mData; private MyAdapter mAdapter; //总价 private double allMoney = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mData = new ArrayList<>();// 初始化数据 for (int i = 0; i < 30; i++) { mData.add(new GoodBean(false, R.mipmap.ic_launcher, "name" + (i + 1), "guige" + (i + 1), 5.21 + i, i + 1)); } mAllCkeck = (CheckBox) findViewById(R.id.allCkeck); mAllMoney = (TextView) findViewById(R.id.allMoney); mList = (SwipeMenuListView) findViewById(R.id.allList);// 设置侧滑菜单 SwipeMenuCreator creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { SwipeMenuItem openItem = new SwipeMenuItem( getApplicationContext());// 设置菜单的背景 openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE)));// 宽度 菜单的宽度是一定要有的,否则不显示菜单,笔者就吃了这样的亏 openItem.setWidth(180);// 菜单标题 openItem.setTitle("删除");// 标题大小 openItem.setTitleSize(18);// 标题的颜色 openItem.setTitleColor(Color.WHITE);// 添加到menu menu.addMenuItem(openItem); } }; mList.setMenuCreator(creator); mAdapter = new MyAdapter(); mList.setAdapter(mAdapter);// 设置侧滑菜单点击事件 mList.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {// 点击后删除商品 mData.remove(position);// 删除商品后刷新数据 mAdapter.notifyDataSetChanged(); return false; } }); mAllCkeck.setOnCheckedChangeListener(this); mAllMoney.setText("总价" + initNumber(allMoney)); } //全选操作处理 @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { allMoney = 0; if (isChecked) {// 全选后商品总价为每个商品价钱X每个商品个数的总和 for (int i = 0; i < mData.size(); i++) { mData.get(i).setCheckState(true);// 计算总价 allMoney += (mData.get(i).getGoodPrice() * mData.get(i).getGoodNumber()); } } else {//没有全选则总价为0 for (int i = 0; i < mData.size(); i++) { mData.get(i).setCheckState(false); } } mAllMoney.setText("总价" + initNumber(allMoney)); mAdapter.notifyDataSetChanged(); } //适配器 class MyAdapter extends BaseAdapter { @Override public int getCount() { return mData != null ? mData.size() : 0; } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.shop_item, null, false); viewHolder.mItemCheck = (ImageView) convertView.findViewById(R.id.itemCheck); viewHolder.mItemImage = (ImageView) convertView.findViewById(R.id.itemImage); viewHolder.mItemName = (TextView) convertView.findViewById(R.id.itemName); viewHolder.mItemGuige = (TextView) convertView.findViewById(R.id.itemGuige); viewHolder.mItemPrice = (TextView) convertView.findViewById(R.id.itemPrice); viewHolder.mItemMove = (TextView) convertView.findViewById(R.id.itemMove); viewHolder.mItemNumber = (TextView) convertView.findViewById(R.id.itemNumber); viewHolder.mItemAdd = (TextView) convertView.findViewById(R.id.itemAdd); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.mItemCheck.setImageResource(mData.get(position).isCheckState() ? R.mipmap.ic_checked : R.mipmap.ic_uncheck); viewHolder.mItemImage.setImageResource(mData.get(position).getImageId()); viewHolder.mItemName.setText(mData.get(position).getGoodName()); viewHolder.mItemGuige.setText(mData.get(position).getGoodGuige()); viewHolder.mItemPrice.setText(mData.get(position).getGoodPrice() + "元"); viewHolder.mItemNumber.setText(mData.get(position).getGoodNumber() + "");//处理item 的选中和未选中 viewHolder.mItemCheck.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mData.get(position).isCheckState()) { // 由选中变成未选中 从总价中减去价格 mData.get(position).setCheckState(false); allMoney -= (mData.get(position).getGoodPrice() * mData.get(position).getGoodNumber()); } else {// 由未选中变成选中 总价中加上价格 mData.get(position).setCheckState(true); allMoney += (mData.get(position).getGoodPrice() * mData.get(position).getGoodNumber()); } mAllMoney.setText("总价" + initNumber(allMoney)); mAdapter.notifyDataSetChanged(); } });// 处理添加个数 viewHolder.mItemAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// 如果选中 增加后要增加总价钱 if (mData.get(position).isCheckState()) { allMoney += mData.get(position).getGoodPrice(); mAllMoney.setText("总价" + initNumber(allMoney)); } mData.get(position).setGoodNumber(mData.get(position).getGoodNumber() + 1); mAdapter.notifyDataSetChanged(); } });// 处理减少个数 viewHolder.mItemMove.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// 如果选中 减少后要减少总价格 if (mData.get(position).isCheckState()) { allMoney -= mData.get(position).getGoodPrice(); mAllMoney.setText("总价" + initNumber(allMoney)); } if (mData.get(position).getGoodNumber() - 1 > 0) { mData.get(position).setGoodNumber(mData.get(position).getGoodNumber() - 1); } else { mData.remove(position); } mAdapter.notifyDataSetChanged(); } }); return convertView; } class ViewHolder { ImageView mItemCheck; ImageView mItemImage; TextView mItemName; TextView mItemGuige; TextView mItemPrice; TextView mItemMove; TextView mItemNumber; TextView mItemAdd; } } //处理double数据 四舍五入保留两位小数 public static double initNumber(double oldNum) { return new BigDecimal(oldNum).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); }}
——————————————我是分割线——————————————————
这是主activity的布局
———————————————我是分割线———————————————————
<?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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="activitytest.example.com.shopcar.MainActivity"> <com.baoyz.swipemenulistview.SwipeMenuListView android:id="@+id/allList" android:layout_width="match_parent" android:layout_height="match_parent"> </com.baoyz.swipemenulistview.SwipeMenuListView> <LinearLayout android:layout_width="match_parent" android:layout_height="70dp" android:layout_alignParentBottom="true" android:background="#808080" android:gravity="center_vertical" android:orientation="horizontal"> <CheckBox android:id="@+id/allCkeck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="全选" /> <TextView android:id="@+id/allMoney" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="总价:" /> </LinearLayout></RelativeLayout>
———————————————我是分割线—————————————————————————
这是数据JavaBean
———————————我是分割线———————————————
package activitytest.example.com.shopcar;import java.math.BigDecimal;/** * Created by 金金 on 2016/12/13. */public class GoodBean { private boolean checkState; private int imageId; private String goodName; private String goodGuige; private double goodPrice; private int goodNumber; public boolean isCheckState() { return checkState; } public void setCheckState(boolean checkState) { this.checkState = checkState; } public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } public String getGoodName() { return goodName; } public void setGoodName(String goodName) { this.goodName = goodName; } public String getGoodGuige() { return goodGuige; } public void setGoodGuige(String goodGuige) { this.goodGuige = goodGuige; } public double getGoodPrice() { return goodPrice; } public void setGoodPrice(double goodPrice) { this.goodPrice = new BigDecimal(goodPrice).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } public int getGoodNumber() { return goodNumber; } public void setGoodNumber(int goodNumber) { this.goodNumber = goodNumber; } public GoodBean(boolean checkState, int imageId, String goodName, String goodGuige, double goodPrice, int goodNumber) { this.checkState = checkState; this.imageId = imageId; this.goodName = goodName; this.goodGuige = goodGuige; this.goodPrice = new BigDecimal(goodPrice).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); this.goodNumber = goodNumber; }}
————————————我是分割线————————————————————
这是ListView 的item布局
——————————————我是分割线————————————————————
<?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="100dp" android:background="#8a8a8a" android:padding="8dp"> <ImageView android:id="@+id/itemCheck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:src="@mipmap/ic_uncheck" /> <ImageView android:id="@+id/itemImage" android:layout_width="80dp" android:layout_height="80dp" android:layout_toRightOf="@+id/itemCheck" android:src="@mipmap/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerVertical="true" android:layout_toRightOf="@+id/itemImage" android:orientation="vertical" android:weightSum="3"> <TextView android:id="@+id/itemName" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="商品名" /> <TextView android:id="@+id/itemGuige" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="商品规格" /> <TextView android:id="@+id/itemPrice" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="商品价格" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true"> <TextView android:id="@+id/itemMove" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_move" /> <TextView android:id="@+id/itemNumber" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="100" /> <TextView android:id="@+id/itemAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_add" /> </LinearLayout></RelativeLayout>
——————————————————我是分割线————————————————————————————
剩下的就是些图片了
SwipeMenuListView开源项目地址
https://github.com/baoyongzhang/SwipeMenuListView
源码在这
http://download.csdn.net/detail/rosener/9710694
完了
0 0
- Android 仿京东购物车
- Android 购物车
- Android 购物车效果
- android 购物车
- 购物车动画(Android)
- Android-------------实现购物车
- Android实现购物车
- Android购物车
- Android简单购物车
- android studio购物车
- android 购物车
- Android购物车
- Android购物车
- Android购物车
- android 二级购物车
- Android仿淘宝购物车
- Android仿淘宝购物车
- Android 购物车的实现
- 12131
- Ubuntu下使用GStreamer开发简单的mp3播放器【转】
- 使用正则表达式校验时间,精确到秒,包括年月日时分秒,14位格式精确校验,正则表达式精确校验时间
- 12132
- 进程调度算法之FCFS
- android 购物车
- Darwin Streaming Server for Windows 安裝
- 使用Apache POI导出Excel数据有BUG
- 分类算法之决策树(Decision tree)
- Android N之SurfaceFlinger流程解析(3)
- 微商公社新兵连第四天
- 集合框架_Collection集合的高级功能测试
- Linux卸载home独立分区
- 第十五周 oj训练 C语言习题 字符串长度