购物车逻辑
来源:互联网 发布:石家庄网络推广招聘 编辑:程序博客网 时间:2024/06/06 04:34
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.android.support:recyclerview-v7:26.+'compile 'com.github.bumptech.glide:glide:3.6.0'
//主Activity的逻辑public class Main2Activity extends AppCompatActivity implements GoodsView { private TextView btn_back; private Goods goods; private Pgoods pgoods; public CheckBox ck_all; private ExpandableListView wu_home; List<Goodsuser2> list=new ArrayList<Goodsuser2>(); List<List<Goodsuser>> list2=new ArrayList<List<Goodsuser>>(); private AddDleneteView adv; private TextView tv_show_price; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); wu_home =(ExpandableListView)findViewById(R.id.wu_home); ck_all=(CheckBox)findViewById(R.id.ck_all); tv_show_price =(TextView)findViewById(R.id.tv_show_price); //返回 btn_back =(TextView)findViewById(R.id.btn_back); btn_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); //中间的数据 pgoods = new Pgoods(Main2Activity.this,list,list2,this); pgoods.Goods(); //全选的逻辑 ck_all.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean checked = ck_all.isChecked(); for (Goodsuser2 i:list){ i.setItem1_cb(checked); } //二级的状态 for(List<Goodsuser> i1:list2){ for (int j=0;j<i1.size();j++){ i1.get(j).setChokx(checked); } } goods.notifyDataSetChanged(); changesum(list2); } }); } //计算 public void changesum(List<List<Goodsuser>> childBeen){ double sum=0; for (List<Goodsuser> i1:childBeen){ for(int r=0;r<i1.size();r++) { boolean childCb1 = i1.get(r).isChokx(); if(childCb1){ double price = i1.get(r).getGoodsprice(); int num = i1.get(r).getNum(); Log.e("------",num+"----"+price); sum+=price*num; } } } tv_show_price.setText("¥:"+sum); } @Override public void success(List<Goodsuser2> list,List<List<Goodsuser>> list2) { goods = new Goods(this,list,list2); wu_home.setAdapter(goods); for (int i=0;i<goods.getGroupCount();i++){ wu_home.expandGroup(i); } goods.notifyDataSetChanged(); } @Override public void failed(String tag, String e) { }}//P层的逻辑public class Pgoods { private Context context; private List<Goodsuser2> list; private List<List<Goodsuser>> list2; private GoodsView goodsView; public Pgoods(Context context, List<Goodsuser2> list, List<List<Goodsuser>> list2, GoodsView goodsView) { this.context = context; this.list = list; this.list2 = list2; this.goodsView = goodsView; } //购物车的数据 public void Goods(){ OkHttp.getinstance().getData("http://120.27.23.105/product/getCarts?uid=100", new AllBack() { @Override public void onSuccess(String tag, Object o) { ImgBean img=(ImgBean) o; List<ImgBean.DataBean> data = img.getData(); for (int i=0;i<data.size();i++){ String sellerName = data.get(i).getSellerName(); list.add(new Goodsuser2(false,sellerName)); List<ImgBean.DataBean.ListBean> list = data.get(i).getList(); List<Goodsuser> list1=new ArrayList<Goodsuser>(); for (int j=0;j<list.size();j++){ String title = list.get(j).getTitle(); String images = list.get(j).getImages(); double price = list.get(j).getPrice(); list1.add(new Goodsuser(title,images,price,1,false)); } list2.add(list1); } goodsView.success(list,list2); } @Override public void onFailed(String tag, String e) { goodsView.failed("",e); } }, ImgBean.class,""); }}//p层与v层的逻辑public interface GoodsView { void success(List<Goodsuser2> list,List<List<Goodsuser>> list2); void failed(String tag, String e);}
适配器的操作
public class Goods extends BaseExpandableListAdapter { private Context context; private List<Goodsuser2> list; private List<List<Goodsuser>> list2; Main2Activity con; public Goods(Context context, List<Goodsuser2> list, List<List<Goodsuser>> list2) { this.context = context; this.list = list; this.list2 = list2; con= (Main2Activity) context; } @Override public int getGroupCount() { return list.size(); } @Override public int getChildrenCount(int i) { return list2.get(i).size(); } @Override public Object getGroup(int i) { return list.get(i); } @Override public Object getChild(int i, int i1) { return list2.get(i).get(i1).getGoodsname2(); } @Override public long getGroupId(int i) { return i; } @Override public long getChildId(int i, int i1) { return i1; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(final int position, boolean b, View view, ViewGroup viewGroup) { final GroupViewHolder holder; if(view==null){ holder = new GroupViewHolder(); view=view.inflate(context,R.layout.fanther_view,null); holder.cb=(CheckBox)view.findViewById(R.id.item1_cb); holder.tv=(TextView)view.findViewById(R.id.fname); view.setTag(holder); }else{ holder=(GroupViewHolder)view.getTag(); } holder.cb.setChecked(list.get(position).isItem1_cb()); holder.tv.setText(list.get(position).getName()); holder.cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //首先获取到父级的选中状态 boolean checked1 = holder.cb.isChecked(); //将状态值添加进存放父级的集合 list.get(position).setItem1_cb(checked1); //获取到Activity,方便对全选做操作 Main2Activity con=(Main2Activity)context; //遍历父级的集合 for (Goodsuser2 i:list){ //取出我们添加在集合的一个布尔值 boolean item1_cb = i.isItem1_cb(); //如果我们的父级其中有一条没有被选中 if(!item1_cb){ //那么我们的总的全选按钮就不勾选 con.ck_all.setChecked(false); break;//必选加,否则会出现去掉父级的按钮全选按钮就不会被取消 }else{ con.ck_all.setChecked(true); } } con.changesum(list2); //获取到我们子级的集合长度 int size = list2.get(position).size(); //如果我们的父级全部被选中 if(checked1){ //那么你就遍历子级的长度 for (int j=0;j<size;j++){ //将我们的子级全部都选中 list2.get(position).get(j).setChokx(true); } }else{ for (int j=0;j<size;j++){ list2.get(position).get(j).setChokx(false); } } //刷新我们的适配器 notifyDataSetChanged(); con.changesum(list2); } }); return view; } @Override public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) { final ChildViewHolder holder; if(view==null){ holder=new ChildViewHolder(); view=view.inflate(context,R.layout.layout_gouwu,null); holder.rv=view.findViewById(R.id.item_name); holder.item_img66=view.findViewById(R.id.item_img66); holder.item_price=view.findViewById(R.id.item_price); holder.item_cb=view.findViewById(R.id.item_cb); 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.jiajia); holder.jiajia.setNumber(list2.get(i).get(i1).getNum()); holder.jiajia.setOnAddDelClickListener(new AddDleneteView.OnAddDelClickListener() { @Override public void onAddClick(View v) { int number = holder.jiajia.getNumber(); number++; holder.jiajia.setNumber(number); list2.get(i).get(i1).setNum(number); Log.e("-----jia",number+""); con.changesum(list2); } @Override public void onDelClick(View v) { int number = holder.jiajia.getNumber(); number--; holder.jiajia.setNumber(number); list2.get(i).get(i1).setNum(number); Log.e("-----建",number+""); notifyDataSetChanged(); con.changesum(list2); } }); view.setTag(holder); }else{ holder=(ChildViewHolder)view.getTag(); } holder.rv.setText(list2.get(i).get(i1).getGoodsname2()); String images =list2.get(i).get(i1).getGoodsimg(); String[] split = images.split("\\|"); Glide.with(context).load(split[0]).into(holder.item_img66); holder.item_price.setText(list2.get(i).get(i1).getGoodsprice()+""); holder.item_cb.setChecked(list2.get(i).get(i1).isChokx()); holder.item_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //定义一个flag用于跳出循环 boolean flag=false; //获取我们子级的选中状态 boolean checked = holder.item_cb.isChecked(); //将选中状态返回给我们存放子级的集合中 list2.get(i).get(i1).setChokx(checked); //获取到Activity Main2Activity con=(Main2Activity)context; //循环我们的子级集合 for (List<Goodsuser> i1:list2){ //循环第二层的集合 for (int j=0;j<i1.size();j++){ //获取到子级条目数的选中状态 boolean chokx = i1.get(j).isChokx(); //如果我们的子级条目有一条未被选中 if(!chokx){ //那么就让我们的全选按钮为未选中 con.ck_all.setChecked(false); //同时将父级的按钮也变为未选中 list.get(i).setItem1_cb(false); //flag为true,跳出本层的循环 flag=true; break; }else{ con.ck_all.setChecked(true); list.get(i).setItem1_cb(true); } } if (flag){ break; } } con.changesum(list2); //遍历每一个父级下面的子级集合判断 //获取到子级的集合长度 int size = list2.get(i).size(); //遍历子级集合 for (int e=0;e<size;e++){ //获取到子级的选中状态 boolean chokx = list2.get(i).get(e).isChokx(); //如果子级有一条未被选中 if(!chokx){ //那么我们的父级按钮就不会被选中 list.get(i).setItem1_cb(false); break; }else{ list.get(i).setItem1_cb(true); } } notifyDataSetChanged(); con.changesum(list2); } }); return view; } @Override public boolean isChildSelectable(int i, int i1) { return false; } class GroupViewHolder { CheckBox cb; TextView tv; } class ChildViewHolder { TextView rv; ImageView item_img66; TextView item_price; TextView txt_delete; TextView et_number; TextView txt_add; CheckBox item_cb; AddDleneteView jiajia; }}
阅读全文
0 0
- 购物车实现逻辑
- TP 购物车逻辑
- 购物车 全选逻辑
- 购物车实现逻辑
- 购物车逻辑
- 购物车逻辑
- 购物车逻辑
- 购物车逻辑Angularjs
- 购物车简单逻辑
- 购物车简单逻辑
- 购物车逻辑
- 购物车逻辑
- 购物车逻辑
- 一级购物车逻辑
- 购物车实现逻辑【详解】
- 仿淘宝购物车逻辑
- 购物车实现逻辑【详解】
- 商城购物车逻辑思路
- 考试总结
- 使用React Native编写的一款阅读类app ———《轻松一刻》
- 武汉seo:做网站标题优化教程设置的老生常谈问题
- tab布局
- retrofit的封装
- 购物车逻辑
- 博客转移公告
- android SeekBar 样式大全
- redis源码分析之有序集SortedSet
- 购物车添加删除
- 交叉验证(Cross-validation)
- 简单的混合开发
- 阿里Dubbo疯狂更新,关Spring Cloud什么事?
- java线程的生命周期和API