一级列表购物车

来源:互联网 发布:淘宝专业版装修教程 编辑:程序博客网 时间:2024/04/26 12:48
------------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;    }}


原创粉丝点击