一级购物车代码
来源:互联网 发布:为知个人知识管理 编辑:程序博客网 时间:2024/03/29 14:36
////////////////////////////////////////需要的属性
package com.bwei.listview.bean;public class GoodsBean { private String childTitle; private boolean checkchild; private String img; private double price; private int num; private boolean btn; public GoodsBean(String childTitle, boolean checkchild, String img, double price, int num, boolean btn) { this.childTitle = childTitle; this.checkchild = checkchild; this.img = img; this.price = price; this.num = num; this.btn = btn; } public String getChildTitle() { return childTitle; } public void setChildTitle(String childTitle) { this.childTitle = childTitle; } public boolean isCheckchild() { return checkchild; } public void setCheckchild(boolean checkchild) { this.checkchild = checkchild; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public boolean isBtn() { return btn; } public void setBtn(boolean btn) { this.btn = btn; } @Override public String toString() { return "GoodsChilde{" + "childTitle='" + childTitle + '\'' + ", checkchild=" + checkchild + ", img='" + img + '\'' + ", price=" + price + ", num=" + num + ", btn=" + btn + '}'; }}
///////////////////////////////////////////////////接口
public interface CallBack { void onSuccess(String tag,Object o); void onFailed(Exception e);}////////////////////////////////////////////////////接口
public interface Iv { void onSuccess(List<GoodsBean> list); void onFiled( Exception e);}/////////////////////////////////////////////////////自定义View
package com.bwei.listview.myview;/** * Created by HQ on 2017/11/21. */import android.content.Context;import android.content.res.TypedArray;import android.graphics.Color;import android.util.AttributeSet;import android.view.View;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import com.bwei.listview.R;/** * 作者 * on 2017/11/18 10:49 */public class AddDeleteView extends LinearLayout { private OnAddDelClickListener listener; private EditText etNumber; //对外提供一个点击的回调接口 public interface OnAddDelClickListener{ void onAddClick(View v); void onDelClick(View v); } public void setOnAddDelClickListener(OnAddDelClickListener listener){ if(listener!=null){ this.listener=listener; } } public AddDeleteView(Context context) { this(context,null); } public AddDeleteView(Context context, AttributeSet attrs) { this(context, attrs,0); } public AddDeleteView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context, attrs, defStyleAttr); } private void initView(Context context, AttributeSet attrs, int defStyleAttr) { View.inflate(context, R.layout.layout_add_delete,this); //获取控件 TextView txtDelete=findViewById(R.id.txt_delete); TextView txtAdd=findViewById(R.id.txt_add); etNumber = findViewById(R.id.et_number); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AddDeleteViewStyle); String leftText = typedArray.getString(R.styleable.AddDeleteViewStyle_left_text); String rightText = typedArray.getString(R.styleable.AddDeleteViewStyle_right_text); String middleText = typedArray.getString(R.styleable.AddDeleteViewStyle_middle_text); int color = typedArray.getColor(R.styleable.AddDeleteViewStyle_left_text_color, Color.BLACK); txtDelete.setText(leftText); txtAdd.setText(rightText); etNumber.setText(middleText); txtDelete.setTextColor(color); //回收 typedArray.recycle(); txtDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { listener.onDelClick(view); } }); txtAdd.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { listener.onAddClick(view); } }); } //对外提供一个修改数字的方法 public void setNumber(int number){ if(number>0){ etNumber.setText(number+""); } } //对外提供一个获取当前数字的方法 public int getNumber(){ String string = etNumber.getText().toString(); int i = Integer.parseInt(string); return i; }}
///////////////////////////////////////////////////////P层
package com.bwei.listview.presenter;import android.content.Context;import android.util.Log;import com.bwei.listview.MainActivity;import com.bwei.listview.bean.Bean;import com.bwei.listview.bean.GoodsBean;import com.bwei.listview.model.CallBack;import com.bwei.listview.model.HttpUtils;import com.bwei.listview.model.Iv;import java.util.HashMap;import java.util.List;/** * Created by on 2017/11/21. */public class Presenter { private Context context; private Iv iv; private List<GoodsBean> list; public Presenter(Context context, Iv iv, List<GoodsBean> list) { this.context = context; this.iv = iv; this.list = list; } public void Goods() { HashMap<String, String> map = new HashMap<>(); HttpUtils.getInstance().post("http://120.27.23.105/product/getCarts?uid=100", map, new CallBack() { @Override public void onSuccess(String tag, Object o) { Bean bean = (Bean) o; List<Bean.DataBean> data = bean.getData(); for(int i=0;i<data.size();i++){ List<Bean.DataBean.ListBean> list1 = data.get(i).getList(); for(int j=0;j<list1.size();j++){ double price = list1.get(j).getBargainPrice(); String images = list1.get(j).getImages(); String title = list1.get(j).getTitle(); list.add(new GoodsBean(title,false,images,price,1,false)); } Log.e("hhh", list.toString()); } iv.onSuccess(list); } @Override public void onFailed(Exception e) { } },Bean.class,"hh"); } }
///////////////////////////////////////////适配器
package com.bwei.listview.adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import com.bwei.listview.MainActivity;import com.bwei.listview.R;import com.bwei.listview.bean.GoodsBean;import com.bwei.listview.myview.AddDeleteView;import java.util.List;import static android.R.attr.checked;/** * Created by on 2017/11/22. */public class GoodsAdapter extends BaseAdapter { private Context context; private List<GoodsBean> list; MainActivity con; private View view; public GoodsAdapter(Context context, List<GoodsBean> list) { this.context = context; this.list = list; con=(MainActivity)context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(final int i, View view, ViewGroup viewGroup) { final ChildViewHolder holder; if(view==null){ holder =new ChildViewHolder(); view = view.inflate(context, R.layout.ex_child_item, null); holder.ch2=view.findViewById(R.id.child_checkbox);//子级的选择框 holder.title=view.findViewById(R.id.shop_title);//子级的标题 holder.img=view.findViewById(R.id.shop_img);//图片 holder.et_number=view.findViewById(R.id.et_number);//加减中间的数量 holder.price=view.findViewById(R.id.shop_price);//价格 holder.txt_delete=view.findViewById(R.id.txt_delete);//加减器的减 holder.txt_add=view.findViewById(R.id.txt_add);//加减器的加 holder.txt_delete.setText("-");//设置显示减号 holder.txt_add.setText("+");//设置显示加号 holder.jiajia=view.findViewById(R.id.adv);//设置显示加减器 holder.jiajia.setNumber(list.get(i).getNum());//自定义view修改数字的方法 holder.btn=view.findViewById(R.id.shop_delete);//删除的按钮 view.setTag(holder); }else{ holder=(ChildViewHolder)view.getTag(); } holder.jiajia.setOnAddDelClickListener(new AddDeleteView.OnAddDelClickListener() { @Override public void onAddClick(View v) { int number = holder.jiajia.getNumber(); number++; holder.jiajia.setNumber(number); list.get(i).setNum(number); con.changesum(list);//计算的方法 } @Override public void onDelClick(View v) { int number = holder.jiajia.getNumber(); number--; holder.jiajia.setNumber(number); list.get(i).setNum(number); con.changesum(list); } }); holder.ch2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean checked = holder.ch2.isChecked(); list.get(i).setCheckchild(checked); //获取到Activity MainActivity con=(MainActivity)context; for(int i=0;i<list.size();i++){ boolean checkchild = list.get(i).isCheckchild(); if(!checkchild){ con.all_checKbox.setChecked(false); break; }else{ con.all_checKbox.setChecked(true); } } con.changesum(list); } }); holder.ch2.setChecked(list.get(i).isCheckchild()); holder.title.setText(list.get(i).getChildTitle()); String img = list.get(i).getImg(); String[] split = img.split("\\|"); Glide.with(context).load(split[0]).into(holder.img); holder.price.setText(list.get(i).getPrice()+""); return view; } class ChildViewHolder { CheckBox ch2; TextView title; ImageView img; TextView price; TextView txt_delete; TextView et_number; TextView txt_add; AddDeleteView jiajia; Button btn; }}
/////////////////////////////////////////////////MainActivity
package com.bwei.listview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.CheckBox;import android.widget.ListView;import android.widget.TextView;import com.bwei.listview.adapter.GoodsAdapter;import com.bwei.listview.bean.GoodsBean;import com.bwei.listview.model.Iv;import com.bwei.listview.presenter.Presenter;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements Iv { private ListView listView; public CheckBox all_checKbox; private TextView total_price; private TextView total_number; private TextView pay; private TextView edit; List<GoodsBean> list = new ArrayList<GoodsBean>(); private Presenter presenter; private GoodsAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView); all_checKbox = (CheckBox) findViewById(R.id.all_chekbox); total_price = (TextView) findViewById(R.id.total_price); total_number = (TextView) findViewById(R.id.total_number); pay = (TextView) findViewById(R.id.tv_go_to_pay); edit = (TextView) findViewById(R.id.edit); presenter = new Presenter(MainActivity.this, this, list); presenter.Goods(); //全选按钮的点击事件 all_checKbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获取到全选按钮的状态 boolean checked = all_checKbox.isChecked(); for (GoodsBean i : list) { i.setCheckchild(checked); } //刷新适配器 adapter.notifyDataSetChanged(); //计算的方法 changesum(list); } }); } //计算的逻辑 public void changesum(List<GoodsBean> goodsbean) { double sum = 0; int count = 0; for (int i = 0; i < goodsbean.size(); i++) { boolean childCb1 = goodsbean.get(i).isCheckchild(); if (childCb1) { double price = goodsbean.get(i).getPrice(); int num = goodsbean.get(i).getNum(); sum += num * price; count += num; } } total_price.setText("¥:" + sum); total_number.setText("共计有"+count+"件商品"); } @Override public void onSuccess(List<GoodsBean> list) { adapter = new GoodsAdapter(this, list); listView.setAdapter(adapter); adapter.notifyDataSetChanged(); } @Override public void onFiled(Exception e) { }}
阅读全文
0 0
- 一级购物车代码
- 一级购物车代码点我
- 一级列表购物车
- 一级购物车
- 一级列表购物车
- 一级购物车
- 购物车一级列表
- 一级购物车
- 一级购物车逻辑
- 一级购物车
- 一级购物车demo
- 一级购物车布局
- 一级购物车的展示(代码篇)
- 一级列表的购物车
- 一级列表购物车完整版
- 一级列表的购物车
- 仿购物车一级列表
- android一级列表购物车
- 产生可能的集合(C/python)
- c#ppt转换为序列png
- 【第十二周项目4】Floyd算法验证
- mvp购物车的实现 网络请求图片实现跳转
- 【ASP.NET】asp.net基础学习
- 一级购物车代码
- Python为什么简便?
- 错误总结之列名冲突
- 两种常用的交换排序算法--冒泡排序、快速排序
- ssm框架整合maven依赖jar包
- Spark Streaming Backpressure
- Android自定义View——从零开始实现雪花飘落效果
- VMware下虚拟机的三种网络模式
- Oracle 删除用户和表空间