本文链接:http://blog.csdn.net/IT666DHW/article/details/78576847(参考本链接文章)
首先bean类里添加两个字段,,并且封装get set方法
- //商品的选中 属性
- private boolean check;
- //商家是否选中
- private boolean shopCheck;
- //是否是第一个 如果isfirst 等于1 显示商户的名称, 否则隐藏商户的名称
- private int isFirst = 2;
Activity里面写一个setFirst()方法,并调用, 设置字段里面的isfirst的值
- setFirst(mAllOrderList)
- /**
- * 是否需要 显示商家
- *
- * @param mAllOrderList
- */
- private void setFirst(List<ShopBean.OrderDataBean.CartlistBean> mAllOrderList){
- if(mAllOrderList.size()>0){
- //如果是第一条数据 就设置是第一条为1
- mAllOrderList.get(0).setIsFirst(1);
- //从第二条开始遍历,
- for(int i=1;i<mAllOrderList.size();i++){
- //如果两个挨着的是同一个商家的
- if(mAllOrderList.get(i).getShopId() == mAllOrderList.get(i-1).getShopId()){
- //就设置为2 不是第一个条目 ,隐藏商家
- mAllOrderList.get(i).setIsFirst(2);
- }else {
- //设置为1 是第一个条目 显示商家
- mAllOrderList.get(i).setIsFirst(1);
- }
- }
- }
- }
适配器的MyViewHolder里面找到控件
- shop_checkbox = (CheckBox) itemView.findViewById(R.id.shop_checkbox);
- shop_name = (TextView) itemView.findViewById(R.id.shop_name);
适配器Adapter里面onBindViewHolder里面设置进入页面是否显示或隐藏商家
根据position判断是第几个条目,然后显示默认的状态,
设置商铺前面的shop_checkbox的点击事件,.调用商品的 监听,(同一个,都是在Activity里面求和)
在商品前面的checkbox的点击事件,,控制商铺前面的checkbox的状态
- @Override
- public void onBindViewHolder(final MyViewHolder holder, final int position) {
- if(list.get(position).getIsFirst() == 1){
- //显示商家
- holder.shop_name.setVisibility(View.VISIBLE);//显示商家
- holder.shop_checkbox.setVisibility(View.VISIBLE);//显示多选框
- holder.shop_name.setText(list.get(position).getShopName());//设置商家名字
- holder.shop_checkbox.setChecked(list.get(position).isShopCheck());//设置商家的选中状态
- }else{
- //隐藏商家
- holder.shop_checkbox.setVisibility(View.GONE);
- holder.shop_name.setVisibility(View.GONE);
- }
- //商家的checkbox的点击事件,控制里面每个商品的选中状态
- holder.shop_checkbox.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //数据源改变,,把当前的选中状态 设置给数据源
- list.get(position).setShopCheck(holder.shop_checkbox.isChecked());
- for (int i=0;i<list.size();i++){
- //如果当前的是同一家上铺的 就商品都 设置成 选中
- if(list.get(position).getShopId()==list.get(i).getShopId()){
- //设置成和 商铺前面的 状态一样
- list.get(i).setCheck(holder.shop_checkbox.isChecked());
- }
- }
- //刷新适配器
- notifyDataSetChanged();
- //调用 商品点击checkbox的接口就可以,,回调到activity里面求和
- if(checkBoxListener!=null){
- checkBoxListener.check(position,holder.customView.getCurrentCount(),holder.checkBox.isChecked(),list);
- }
- }
- });
- //-----------------------------------
- //设置图片
- ImageLoader.getInstance().displayImage(list.get(position).getDefaultPic(),holder.shopface);
- //设置单价,从数据源中
- holder.danjia.setText(list.get(position).getPrice()+"");
- //设置输入框中的值
- holder.customView.setEditText(list.get(position).getCount());
- //复用视图,防止错乱, 数据源里面绑定过了check的值,
- holder.checkBox.setChecked(list.get(position).isCheck());
- /**
- * 商品前面的多选框checkbox ,也要控制 商家前面的 多选框shop_checkbox
- *
- * */
- holder.checkBox.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //holder.checkBox.isChecked()是当前的多选框的选中状态,,赋值给数据源中的标记
- list.get(position).setCheck(holder.checkBox.isChecked());
- /*
- * 添加控制商家 shopcheckbox 的状态
- * */
- for (int i=0;i<list.size();i++){
- for (int j=0;j<list.size();j++){
- //如果是同一家商铺的商品,并且只要有一个商品是未选中,那么商铺的 也不选中
- if(list.get(j).getShopId()==list.get(i).getShopId()&& !list.get(j).isCheck()){
- //商铺的不选中
- list.get(i).setShopCheck(false);
- break;
- }else{
- //如果同一家商铺的商品,并且所有商品是选中的,,商铺的也选中
- list.get(i).setShopCheck(true);
- }
- }
- }
- notifyDataSetChanged();
- //接口回调
- if(checkBoxListener !=null){
- checkBoxListener.check(position,holder.customView.getCurrentCount(),holder.checkBox.isChecked(),list);
- }
- }
- });
- //删除按钮的接口
- cartAdapter.setDelListener(new CartAdapter.DelListener() {
- @Override
- public void del(int positon, List<CartBean.OrderDataBean.CartlistBean> list) {
- //求和的方法
- sum(list);
- //点击删除 重新设置显示和隐藏商家
- setFirst(list);
- }
- });
- select = false;
- //下面全选按钮的点击事件
- quanxuan.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //获取到tag
- // int tag = (int) allSelect.getTag();
- int tag = (int) quanxuan.getTag();
- if(tag==1){
- //如果点击了全选,就记个标记select为true
- // allSelect.setTag(2);
- // allSelect.setBackgroundResource(R.drawable.shopcart_selected);
- quanxuan.setTag(2);
- quanxuan.setBackgroundResource(R.drawable.shopcart_selected);
- select = true;
- }else{
- //如果点击了全选,就记个标记select为false
- // allSelect.setTag(1);
- // allSelect.setBackgroundResource(R.drawable.shopcart_unselected);
- quanxuan.setTag(1);
- quanxuan.setBackgroundResource(R.drawable.shopcart_unselected);
- select = false;
- }
- for(CartBean.OrderDataBean.CartlistBean bean : CartList){
- //给数据源里面的check做标记为true
- bean.setCheck(select);
- bean.setShopCheck(select);
- }
- cartAdapter.notifyDataSetChanged();
- sum(cartAdapter.getList());
- }
- });