一级列表购物车

------------Adapter-------------------------
package com.example.diynsg.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.diynsg.R;
import com.example.diynsg.bean.CardBean;
import com.example.diynsg.bean.MCEvent;
import com.example.diynsg.bean.MsgEvent;
import com.example.diynsg.widget.MyAddDelView;
import com.nostra13.universalimageloader.core.ImageLoader;

import org.greenrobot.eventbus.EventBus;

import java.util.List;

/**
 * Created by yz on 2017/10/23.
 */

public class ShopCarAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {


    private Context context;
    private List<CardBean.DatasBean.CartListBean.GoodsBean> goods;

    private OnItemDelClick onItemDelClick;
    public interface OnItemDelClick{
        public void deleteItem(String position, int i);
    }
    public void setOnItemDelClick(OnItemDelClick onItemDelClick){
        this.onItemDelClick=onItemDelClick;
    }

    public ShopCarAdapter(Context context, List<CardBean.DatasBean.CartListBean.GoodsBean> goods) {
        this.context = context;
        this.goods = goods;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.activity_shopcar_item, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        final CardBean.DatasBean.CartListBean.GoodsBean goodsBean = goods.get(position);
        final MyViewHolder myViewHolder = (MyViewHolder) holder;
        myViewHolder.tv_goodsName.setText(goods.get(position).getGoods_name());
        myViewHolder.tv_price.setText(goods.get(position).getGoods_price());
        ImageLoader.getInstance().displayImage(goods.get(position).getGoods_image_url(), myViewHolder.iv_watch);
        myViewHolder.cb_add.setChecked(goods.get(position).isChecked());
        myViewHolder.tv_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onItemDelClick.deleteItem(goods.get(position).getCart_id(),position);
            }
        });
        //自定义加减器的点击监听事件
        myViewHolder.adv.setOnItemClick(new MyAddDelView.OnItemClick() {
            @Override
            public void onItemAddClick(int count) {
                if (goodsBean.isChecked()) {
                    String goods_price = goodsBean.getGoods_price();
                    float price = Float.parseFloat(goods_price);
                    MCEvent mcEvent = new MCEvent();
                    mcEvent.setMoney(price);
                    mcEvent.setCount(1);
                    EventBus.getDefault().post(mcEvent);

                } else {
                    Toast.makeText(context, "请勾选", Toast.LENGTH_SHORT).show();
                    myViewHolder.adv.setCount();
                }
            }

            @Override
            public void onItemDelClick(int count) {
                if (goodsBean.isChecked()){
                    String goods_price = goodsBean.getGoods_price();
                    float price = Float.parseFloat(goods_price);
                    MCEvent mcEvent = new MCEvent();
                    mcEvent.setMoney(-price);
                    mcEvent.setCount(-1);
                    EventBus.getDefault().post(mcEvent);
                }else{
                    Toast.makeText(context, "请勾选", Toast.LENGTH_SHORT).show();
                    myViewHolder.adv.setCount();
                }
            }
        });
        /**
         * 复选框的选中监听事件
         */
        myViewHolder.cb_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //checkbox当选中状态
                if (myViewHolder.cb_add.isChecked()) {
                    goodsBean.setChecked(true);
                    //把金额和数量传给fragment
                    MCEvent mcEvent = new MCEvent();
                    mcEvent.setMoney(Float.parseFloat(goodsBean.getGoods_price()));
                    mcEvent.setCount(1);
                    EventBus.getDefault().post(mcEvent);
                    //判断是否复选框全部勾选
                    if (isAllSelect()) {
                        MsgEvent msgEvent = new MsgEvent();
                        msgEvent.setChecked(true);
                        EventBus.getDefault().post(msgEvent);
                    }
                } else {
                    //checkbox未选中状态
                    MCEvent mcEvent = new MCEvent();
                    mcEvent.setCount(-1);
                    mcEvent.setMoney(-Float.parseFloat(goodsBean.getGoods_price()));
                    EventBus.getDefault().post(mcEvent);
                    goodsBean.setChecked(false);
                    //全选框取消掉
                    MsgEvent msgEvent = new MsgEvent();
                    msgEvent.setChecked(false);
                    EventBus.getDefault().post(msgEvent);

                }
            }
        });
    }

    /**
     * 遍历集合看看复选框的选中状态
     * @return
     */
    public boolean isAllSelect() {
        //遍历集合看看复选框的选中状态
        for (CardBean.DatasBean.CartListBean.GoodsBean bean : goods) {
            if (!bean.isChecked()) {
                //表示未选中
                return false;
            }
        }
        //表示选中
        return true;
    }

    @Override
    public int getItemCount() {

        return goods.size();
    }

    /**
     * 定义一个方法去fragment那边的全选框操作和里面的复选框进行关联
     *
     * @param flag
     */
    public void cbChecked(boolean flag) {

        MCEvent mcEvent1 = new MCEvent();
        mcEvent1.setFlag(true);
        EventBus.getDefault().post(mcEvent1);
        for (CardBean.DatasBean.CartListBean.GoodsBean bean : goods) {
            if (flag) {
                MCEvent mcEvent = new MCEvent();
                mcEvent.setCount(1);
                mcEvent.setMoney(Float.parseFloat(bean.getGoods_price()));
                EventBus.getDefault().post(mcEvent);
            } else {
                MCEvent mcEvent = new MCEvent();
                mcEvent.setMoney(-Float.parseFloat(bean.getGoods_price()));
                mcEvent.setCount(-1);
                EventBus.getDefault().post(mcEvent);

            }
            bean.setChecked(flag);
            notifyDataSetChanged();
        }
    }



    class MyViewHolder extends RecyclerView.ViewHolder {

        private final CheckBox cb_add;
        private final ImageView iv_watch;
        private final TextView tv_goodsName;
        private final TextView tv_delete;
        private final TextView tv_price;
        private final MyAddDelView adv;

        public MyViewHolder(View itemView) {
            super(itemView);
            cb_add = itemView.findViewById(R.id.cb_add);
            iv_watch = itemView.findViewById(R.id.iv_watch);
            tv_goodsName = itemView.findViewById(R.id.tv_goodsName);
            tv_delete = itemView.findViewById(R.id.tv_delete);
            tv_price = itemView.findViewById(R.id.tv_price);
            adv = itemView.findViewById(R.id.adv);
        }
    }
}

-----------------主界面-------------------
public class Fragment_ShopCar extends Fragment {
    private List<CardBean.DatasBean.CartListBean.GoodsBean> goods;
    private RecyclerView rv;
    private CheckBox cb_all;
    private TextView tv_sumMoney;
    private TextView tv_num;
    private ShopCarAdapter adapter;

    private float sum;
    private int num;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_shopcar, container, false);
        rv = view.findViewById(R.id.rv);
        cb_all = view.findViewById(R.id.cb_all);
        tv_sumMoney = view.findViewById(R.id.tv_sumMoney);
        tv_num = view.findViewById(R.id.tv_num);
        rv.setLayoutManager(new LinearLayoutManager(getActivity()));
        getDate();

        cb_all.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                adapter.cbChecked(cb_all.isChecked());
            }
        });

        return view;
    }


    @Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

    @Subscribe
    public void onMessageEvent(MsgEvent msg) {
        cb_all.setChecked(msg.isChecked());
    }

    @Subscribe
    public void onMCEvent(MCEvent mcEvent) {
        if (mcEvent.isFlag()) {
            sum = 0;
            num = 0;
        }
        float money = mcEvent.getMoney();
        int count = mcEvent.getCount();

        sum += money;
        num += count;
        if (sum < 0||num<0) {
            sum = 0;
            num=0;
        }
        tv_sumMoney.setText(sum + "元");
        tv_num.setText("付款" + num);
    }
}

-------------MCEvent -----------------
package com.example.diynsg.bean;

/**
 * Created by yz on 2017/10/23.
 */

public class MCEvent {
    private float money;
    private int count;
    private boolean flag;

    public boolean isFlag() {
        return flag;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    public float getMoney() {
        return money;
    }

    public void setMoney(float money) {
        this.money = money;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}
-------------MsgEvent--------------------
package com.example.diynsg.bean;

/**
 * Created by yz on 2017/10/23.
 */

public class MsgEvent {

    private boolean checked;

    public boolean isChecked() {
        return checked;
    }

    public void setChecked(boolean checked) {
        this.checked = checked;
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值