一级列表购物车
来源:互联网 发布:淘宝专业版装修教程 编辑:程序博客网 时间: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; }}
阅读全文
0 0
- 一级列表购物车
- 一级列表购物车
- 购物车一级列表
- 一级列表的购物车
- 一级列表购物车完整版
- 一级列表的购物车
- 仿购物车一级列表
- android一级列表购物车
- 购物车一级列表布局
- MVP一级列表购物车自定义View
- 简单实现 一级列表购物车(固定数据)
- 购物车一级列表的简单实现(访问接口数据)
- 一级列表购物车的简单实现(网络接口)
- 购物车(map,一级列表,view绘制加减号)
- 一级购物车
- 一级购物车
- 一级购物车
- 一级购物车逻辑
- 洛谷P1856
- 利用Tensorflow-slim Finetuning分类网流程及C++预测
- system call filters failed to install; check the logs and fix your configuration or disable system c
- 【多进程与多线程】为什么在Python里推荐使用多进程而不是多线程?
- Java高并发秒杀API之web层实现(三)
- 一级列表购物车
- list_head的用法详解
- ubuntu16.04下安装网易云音乐
- 经典购物车
- 教你上传本地代码到github
- JS如何携带参数,传递给后台
- Oracle10g新特性——正则表达式
- 多线程
- 设计模式之三——工厂方法模式(Factory Method)&抽象工厂模式(AbstractFacotry)