购物车逻辑

来源:互联网 发布:石家庄网络推广招聘 编辑:程序博客网 时间: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;    }}

原创粉丝点击