购物车

package soexample.umeng.com.xuzaizahuopu.presenter;

import android.content.Context;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.gson.Gson;

import org.w3c.dom.Text;

import java.util.ArrayList;
import java.util.List;

import soexample.umeng.com.xuzaizahuopu.R;
import soexample.umeng.com.xuzaizahuopu.adapter.MyShoppingCarAdapter;
import soexample.umeng.com.xuzaizahuopu.listener.HttpListener;
import soexample.umeng.com.xuzaizahuopu.model.CarBean;
import soexample.umeng.com.xuzaizahuopu.net.OkHttp;
import soexample.umeng.com.xuzaizahuopu.view.AppDelegate;

public class ShoppingCarFragmentPresenter extends AppDelegate implements View.OnClickListener {
    private Context context;
    private TextView car_manyAll;
    private RecyclerView car_recyclerView;
    private ImageView car_selectAll;
    private TextView car_shopNum;
    private TextView car_textView_compile;
    private String url = "http://www.zhaoapi.cn/product/getCarts?uid=71";
    private MyShoppingCarAdapter adapter;
    private List<CarBean.DataBean> list = new ArrayList<>();

    @Override
    protected int getLayoutId() {
        return R.layout.shoppingcar_layout;
    }

    @Override
    public void initData() {
        super.initData();
        car_manyAll = get(R.id.car_manyAll);
        car_recyclerView = get(R.id.car_recyclerView);
        car_selectAll = get(R.id.car_selectAll);
        car_shopNum = get(R.id.car_shopNum);
        car_textView_compile = get(R.id.car_TextView_compile);

        setClick(this,R.id.car_selectAll);

        //设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        car_recyclerView.setLayoutManager(linearLayoutManager);

        doHttp();
        //设置适配器
        adapter = new MyShoppingCarAdapter(context);
        car_recyclerView.setAdapter(adapter);


        adapter.setCallBack(new MyShoppingCarAdapter.CallBack() {
            @Override
            public void onBack(List<CarBean.DataBean> listBeans) {
                double priceAll = 0;
                int numAll = 0;
                int num = 0;
                for (int i = 0; i <listBeans.size() ; i++) {
                    List<CarBean.DataBean.ListBean> list = listBeans.get(i).getList();
                    for(int a=0;a<list.size();a++){
                        numAll=numAll+list.get(a).getNum();
                        if (list.get(a).isIscheck()){
                            num = num+list.get(a).getNum();
                            priceAll = priceAll+(list.get(a).getPrice()*list.get(a).getNum());
                        }
                    }
                }
                if (num<numAll){
                    car_selectAll.setImageResource(R.drawable.cricle_no);
                    isClick = true;
                }else{
                    car_selectAll.setImageResource(R.drawable.cricle_yes);
                    isClick =false;
                }
                car_manyAll.setText("合计:"+priceAll+"");
                car_shopNum.setText("结算:"+num);
            }
        });
    }

    private void doHttp() {
        new OkHttp().get(url).setListener(new HttpListener() {
            @Override
            public void onSuccess(String data) {
                Gson gson = new Gson();
                CarBean carBean = gson.fromJson(data, CarBean.class);
                list = carBean.getData();
                adapter.setList(list);
            }

            @Override
            public void oonFailure(String data) {

            }
        });
    }

    @Override
    public void getContext(Context context) {
        this.context = context;
    }
    private boolean isClick = true;
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.car_selectAll:
                if (isClick){
                    car_selectAll.setImageResource(R.drawable.cricle_yes);
                    select(true);
                    isClick = false;
                }else{
                    car_selectAll.setImageResource(R.drawable.cricle_no);
                    select(false);
                    isClick = true;
                }
                break;
        }
    }

    private void select(boolean flag) {
        double price = 0;
        int num = 0;
        for (int i = 0; i <list.size() ; i++) {
            List<CarBean.DataBean.ListBean> listchild = list.get(i).getList();
            for(int a= 0;a<listchild.size();a++){
                num++;
                price = listchild.get(a).getPrice()+price;
                listchild.get(a).setIscheck(flag);
            }
        }
        if (flag){
            car_manyAll.setText("合计:"+price);
            car_shopNum.setText("结算:"+num);
        }else{
            car_shopNum.setText("合计:0.00");
            car_manyAll.setText("结算:(0)");
        }
        adapter.notifyDataSetChanged();
    }
}

 

package soexample.umeng.com.xuzaizahuopu.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.ArrayList;
import java.util.List;

import soexample.umeng.com.xuzaizahuopu.R;
import soexample.umeng.com.xuzaizahuopu.model.CarBean;

public class MyShoppingCarAdapter extends RecyclerView.Adapter<MyShoppingCarAdapter.MyViewHolder> {

    private Context context;
    private List<CarBean.DataBean> list = new ArrayList<>();


    public MyShoppingCarAdapter(Context context) {
        this.context = context;
    }

    @NonNull
    @Override
    public MyShoppingCarAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.car_layout, null);
        MyViewHolder holder = new MyViewHolder(view);
        holder.textView = view.findViewById(R.id.name);
        holder.recyclerView =view.findViewById(R.id.recyclerView);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyShoppingCarAdapter.MyViewHolder holder, int position) {
        holder.textView.setText(list.get(position).getSellerName());
        createChildAdapter(context,list.get(position).getList(),holder.recyclerView);

    }

    private void createChildAdapter(Context context, List<CarBean.DataBean.ListBean> listchild, RecyclerView recyclerView) {
        //创建布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        //设置布局管理器
        recyclerView.setLayoutManager(linearLayoutManager);

        MyShopingCarChildAdapter shopingCarChildAdapter = new MyShopingCarChildAdapter(listchild,context);
        recyclerView.setAdapter(shopingCarChildAdapter);
        shopingCarChildAdapter.setCallBack(new MyShopingCarChildAdapter.CallBack() {
            @Override
            public void onBack() {
                callBack.onBack(list);
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public void setList(List<CarBean.DataBean> list) {
        list.remove(0);
        this.list = list;
        notifyDataSetChanged();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        RecyclerView recyclerView;
        public MyViewHolder(View itemView) {
            super(itemView);
        }
    }

    public void setCallBack(CallBack callBack) {
        this.callBack = callBack;
    }
    private CallBack callBack;
    public  interface  CallBack{
        void onBack(List<CarBean.DataBean> listBeans);
    }
}
package soexample.umeng.com.xuzaizahuopu.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.List;

import soexample.umeng.com.xuzaizahuopu.R;
import soexample.umeng.com.xuzaizahuopu.model.CarBean;

public class MyShopingCarChildAdapter extends RecyclerView.Adapter<MyShopingCarChildAdapter.MyViewHolder> {

    private List<CarBean.DataBean.ListBean> list;
    private Context context;
    private int num;

    public MyShopingCarChildAdapter(List<CarBean.DataBean.ListBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.car_item_layout, null);
        MyViewHolder holder = new MyViewHolder(view);
        holder.car_item_add = view.findViewById(R.id.car_item_add);
        holder.car_item_desc =view.findViewById(R.id.car_item_desc);
        holder.car_item_Edit_Text_num = view.findViewById(R.id.car_item_Edit_Text_num);
        holder.car_item_ImageView_select = view.findViewById(R.id.car_item_ImageView_select);
        holder.car_item_ImageView_Shop =view.findViewById(R.id.car_item_ImageView_Shop);
        holder.car_item_jian =view.findViewById(R.id.car_item_jian);
        holder.car_item_many =view.findViewById(R.id.car_item_many);
        holder.car_item_title =view.findViewById(R.id.car_item_title);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
        holder.car_item_title.setText(list.get(position).getTitle());
        holder.car_item_desc.setText(list.get(position).getSubhead());
        holder.car_item_many.setText(list.get(position).getPrice()+"");
        Glide.with(context).load(list.get(position).getImages().split("\\|")[0]).into(holder.car_item_ImageView_Shop);
        if (list.get(position).isIscheck()){
            holder.car_item_ImageView_select.setImageResource(R.drawable.cricle_yes);
        }else{
            holder.car_item_ImageView_select.setImageResource(R.drawable.cricle_no);
        }
        //单选按钮
        holder.car_item_ImageView_select.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (list.get(position).isIscheck()){
                    list.get(position).setIscheck(false);
                }else{
                    list.get(position).setIscheck(true);
                }
                notifyItemChanged(position);
                callBack.onBack();
            }
        });
        holder.car_item_Edit_Text_num.setText(list.get(position).getNum()+"");
        //商品数量增加
        holder.car_item_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               int num = list.get(position).getNum();
                num++;
                list.get(position).setNum(num);
                notifyItemChanged(position);
                callBack.onBack();

            }
        });

        //商品数量减少
        holder.car_item_jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num = list.get(position).getNum();
                num--;
                list.get(position).setNum(num);
                notifyItemChanged(position);
                callBack.onBack();
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }


    public class MyViewHolder extends RecyclerView.ViewHolder {

        ImageView car_item_add,car_item_jian,car_item_ImageView_Shop,car_item_ImageView_select;
        EditText car_item_Edit_Text_num;
        TextView car_item_desc,car_item_title,car_item_many;

        public MyViewHolder(View itemView) {
            super(itemView);
        }
    }

    public void setCallBack(CallBack callBack) {
        this.callBack = callBack;
    }

    private CallBack callBack;
    public  interface  CallBack{
        void onBack();
    }
}
package dw.dw.com.xiaoxuzahuopu.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

import dw.dw.com.xiaoxuzahuopu.R;
import dw.dw.com.xiaoxuzahuopu.model.ShopCarBean;

/**
 * author:DuWei
 * date:2018/11/09
 * 购物车外层商家
 */
public class ShopCarAdapter extends RecyclerView.Adapter<ShopCarAdapter.MyViewHolder> {
    private List<ShopCarBean.DataBean> list = new ArrayList<>();
    private Context context;
    private ShopCarChildAdapter adapter;
    private List<ShopCarBean.DataBean.ListBean> childlist;

    public ShopCarAdapter(Context context) {
        this.context = context;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.shopcar_item_layout, null);
        MyViewHolder holder = new MyViewHolder(view);
        holder.textView = view.findViewById(R.id.shop_car_item_TextView_shop);
        holder.recyclerView = view.findViewById(R.id.shop_car_item_shop_RecyclerView);
        holder.imageView = view.findViewById(R.id.shop_car_item_ImageView_shop_check);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
        //商家名字赋值
        holder.textView.setText(list.get(position).getSellerName());
        //内层商品的adapter设置
        createChildAdapter(holder.recyclerView, context, list.get(position).getList());
        //内层商品接口回调
        adapter.setDataCallBack(new ShopCarChildAdapter.DataCallBack() {
            @Override
            public void onBack() {
                //商家与内部商品按钮联动
                shopCheck(holder, position);
                dataCallBack.onBack(list);
            }
        });

        //商家单选框设置
        if (list.get(position).isShopCheck()) {//选中
            holder.imageView.setImageResource(R.drawable.checkyes);//(设置为选中图片)
        } else {//未选中
            holder.imageView.setImageResource(R.drawable.checkno);//(设置为未选中图片)
        }

        //商家选框按钮
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                shopClick(position);
                notifyItemChanged(position);//刷新单个条目
                dataCallBack.onBack(list);//接口回调
            }
        });
    }

    //商家选框按钮逻辑
    private void shopClick(int position) {
        childlist = list.get(position).getList();//内层商品集合
        if (list.get(position).isShopCheck()) {//选中状态点击变为未选中
            for (int i = 0; i < childlist.size(); i++) {
                childlist.get(i).setCheck(false);//内部商品按钮开关(关闭)
            }
            list.get(position).setShopCheck(false);//外层商家按钮开关(关闭)
        } else {//未选中状态点击变为选中
            for (int i = 0; i < childlist.size(); i++) {
                childlist.get(i).setCheck(true);//内部商品按钮开关(开启)
            }
            list.get(position).setShopCheck(true);//外层商家按钮开关(开启)
        }
    }

    //商家与内部商品按钮联动
    private void shopCheck(MyViewHolder holder, int position) {
        int num = 0;
        int numAll = 0;
        List<ShopCarBean.DataBean.ListBean> childlist = list.get(position).getList();
        for (int i = 0; i < childlist.size(); i++) {
            numAll++;
            if (childlist.get(i).isCheck()) {
                num++;
            }
        }
        if (num == numAll) {
            list.get(position).setShopCheck(true);
            holder.imageView.setImageResource(R.drawable.checkyes);
        } else {
            list.get(position).setShopCheck(false);
            holder.imageView.setImageResource(R.drawable.checkno);
        }
    }

    //购物车内层商品
    private void createChildAdapter(RecyclerView recyclerView, Context context, final List<ShopCarBean.DataBean.ListBean> list) {
        //设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
        recyclerView.setLayoutManager(linearLayoutManager);
        adapter = new ShopCarChildAdapter(list, context);
        recyclerView.setAdapter(adapter);

    }

    //条目总数
    @Override
    public int getItemCount() {
        return list.size();
    }

    //获取数据
    public void setList(List<ShopCarBean.DataBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }

    //ViewHolder
    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        RecyclerView recyclerView;
        ImageView imageView;

        public MyViewHolder(View itemView) {
            super(itemView);
        }
    }

    //接口
    private DataCallBack dataCallBack;

    public void setDataCallBack(DataCallBack dataCallBack) {
        this.dataCallBack = dataCallBack;
    }

    public interface DataCallBack {
        void onBack(List<ShopCarBean.DataBean> list);
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值