全选 一级选中二级 加减器 总价

activity
package com.example.shop_month.ui.activity;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

import com.example.shop_month.R;
import com.example.shop_month.data.ShopBean;
import com.example.shop_month.di.core.Core;
import com.example.shop_month.di.presenter.Presenter;
import com.example.shop_month.ui.adapter.ShopAdapter;
import com.google.gson.Gson;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements Core.SView, CompoundButton.OnCheckedChangeListener {
private Context mContext;
@BindView(R.id.shopRlv)
RecyclerView shopRlv;
@BindView(R.id.srl_container)
SmartRefreshLayout srlContainer;
@BindView(R.id.box_all)
CheckBox boxAll;
@BindView(R.id.price_Settlement)
Button priceSettlement;
@BindView(R.id.Total)
TextView Total;
private Presenter presenter;
private ShopAdapter shopAdapter;
private List<ShopBean.DataBean> data;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    //p层
    presenter = new Presenter();
    presenter.attache(this);
    presenter.techView(this);
    presenter.requestData();
}

@Override
public void showLogin() {

}

@Override
public void hideLogin() {

}

@Override
public void showData(String mCantString) {
    //全选处理
    boxAll.setOnCheckedChangeListener(null);
    boxAll.setOnCheckedChangeListener(this);
    //解析
    ShopBean shopBean = new Gson().fromJson(mCantString, ShopBean.class);
    data = shopBean.getData();
    Log.i("aaa", "接收网络数据: " + data);
    //获取布局管理器
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false);
    shopRlv.setLayoutManager(linearLayoutManager);
    //设置自适配器
    shopAdapter = new ShopAdapter(R.layout.shop_goods1, data);
    shopRlv.setAdapter(shopAdapter);
    //一级商家选中 二级也选中
    shopAdapter.setOnBusinessItemClickLisenter(new ShopAdapter.OnBusinessItemClickLisenter() {
        @Override
        public void onCallBack() {
            //定义reqult
            boolean reqult = true;
            for (int i = 0; i < data.size(); i++) {
                //一级选中
                boolean businessChecked = data.get(i).getBusinessChecked();
                for (int j = 0; j < data.get(i).getSpus().size(); j++) {
                    //二级选中
                    boolean goodsChecked = data.get(i).getSpus().get(j).getGoodsChecked();
                    // 其中一个没选中 全选级不选中
                    reqult = reqult & goodsChecked;
                }
            }
            //一级全部选中  全选也选中
            boxAll.setChecked(reqult);
            //总价
            calculateTotalCount();
        }
    });
}

//总价
private void calculateTotalCount() {
    int totalCount = 0;
    for (int i = 0; i < data.size(); i++) {
        //内层条目
        for (int j = 0; j < data.get(i).getSpus().size(); j++) {
            //判断内层条目是否勾选
            if (data.get(i).getSpus().get(j).getGoodsChecked() == true) {
                //获取商品数据*商品价格
                int praise_num = data.get(i).getSpus().get(j).getPraise_num();
                totalCount += praise_num;
            }
        }
    }
    Total.setText("总价是:" + totalCount);
}

//全选
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    for (int i = 0; i < data.size(); i++) {
        //一级商家全部选中
        data.get(i).setBusinessChecked(isChecked);
        //二级数据选中
        for (int j = 0; j < data.get(i).getSpus().size(); j++) {
            data.get(i).getSpus().get(j).setGoodsChecked(isChecked);
        }
    }
    shopAdapter.notifyDataSetChanged();
    //总价
    calculateTotalCount();
}

}
一级适配器
package com.example.shop_month.ui.adapter;

import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.CheckBox;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.shop_month.R;
import com.example.shop_month.data.ShopBean;

import java.util.List;

public class ShopAdapter extends BaseQuickAdapter<ShopBean.DataBean, BaseViewHolder> {
OnBusinessItemClickLisenter onBusinessItemClickLisenter;

public interface OnBusinessItemClickLisenter {
    //接口
    public void onCallBack();
}

public void setOnBusinessItemClickLisenter(OnBusinessItemClickLisenter onBusinessItemClickLisenter) {
    this.onBusinessItemClickLisenter = onBusinessItemClickLisenter;
}

private CheckBox cb_business;

public ShopAdapter(int layoutResId, @Nullable List<ShopBean.DataBean> data) {
    super(layoutResId, data);
}

@Override
protected void convert(BaseViewHolder helper, final ShopBean.DataBean item) {
    helper.setText(R.id.tv_business_name, item.getName());
    cb_business = helper.getView(R.id.cb_business);
    //避免焦点抢占
    cb_business.setOnCheckedChangeListener(null);
    //商家是否选中状态
    cb_business.setChecked(item.getBusinessChecked());
    //设置商家下的自条目
    RecyclerView rv_goods = helper.getView(R.id.rv_goods);
    //解析二级数据
    final List<ShopBean.DataBean.SpusBean> spus = item.getSpus();
    //布局管理器
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false);
    rv_goods.setLayoutManager(linearLayoutManager);
    //二级适配器
    GoodsAdapter goodsAdapter = new GoodsAdapter(R.layout.shop_goods, spus);
    rv_goods.setAdapter(goodsAdapter);
     //二级控制以及
    goodsAdapter.setOnGoodsItemClickLisenter(new GoodsAdapter.OnGoodsItemClickLisenter() {
        @Override
        public void onCallBack() {
           boolean result=true;
           for (int i=0;i<item.getSpus().size();i++)
           {
             result=  result&item.getSpus().get(i).getGoodsChecked();

           }
           cb_business.setChecked(result);
           goodsAdapter.notifyDataSetChanged();
           onBusinessItemClickLisenter.onCallBack();
        }
    });
    //一级控制二级条目
    cb_business.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //一级商品选中 二级也选中
            for (int i = 0; i < item.getSpus().size(); i++) {
                item.getSpus().get(i).setGoodsChecked(cb_business.isChecked());
            }
            item.setBusinessChecked(cb_business.isChecked());
            //刷新
            notifyDataSetChanged();
            //回传数据全选
            onBusinessItemClickLisenter.onCallBack();
        }
    });
}

}
二级适配器
package com.example.shop_month.ui.adapter;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.shop_month.R;
import com.example.shop_month.data.ShopBean;
import com.example.shop_month.ui.activity.CalculatorView;

import java.util.List;

class GoodsAdapter extends BaseQuickAdapter<ShopBean.DataBean.SpusBean, BaseViewHolder> {
OnGoodsItemClickLisenter onGoodsItemClickLisenter;

public interface OnGoodsItemClickLisenter {
    public void onCallBack();
}

public void setOnGoodsItemClickLisenter(OnGoodsItemClickLisenter onGoodsItemClickLisenter) {
    this.onGoodsItemClickLisenter = onGoodsItemClickLisenter;
}

private ImageView image_goods;

public GoodsAdapter(int layoutResId, @Nullable List<ShopBean.DataBean.SpusBean> data) {
    super(layoutResId, data);
}

@Override
protected void convert(BaseViewHolder helper, final ShopBean.DataBean.SpusBean item) {
    CheckBox che_good = helper.getView(R.id.che_good);
    //避免焦点枪战
    che_good.setOnCheckedChangeListener(null);
    //二级商家是否选中
    che_good.setChecked(item.getGoodsChecked());
    helper.setText(R.id.goods_name, item.getName());
    helper.setText(R.id.goods_price, "" + item.getPraise_num());
    image_goods = helper.getView(R.id.image_goods);
    String pic_url = item.getPic_url();
    String[] imagesStr = pic_url.split("\\|");
    Glide.with(mContext).load(imagesStr[0]).into(image_goods);
//二级回传给一级 一个没选中 一级不选中
      /*  che_good.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                item.setGoodsChecked(isChecked);
                onGoodsItemClickLisenter.onCallBack();
            }
        });*/
        //加减器
        CalculatorView calculatorView = helper.getView(R.id.cv_calculatorView);
        calculatorView.setOnCalCulatorLisenter(new CalculatorView.OnCalCulatorLisenter() {
            @Override
            public void onDeress(int number) {
                item.setDefalutNumber(number);
                //onGoodsItemClickLisenter.onCallBack();
            }

            @Override
            public void onAdd(int number) {
                item.setDefalutNumber(number);
//                onGoodsItemClickLisenter.onCallBack();
            }
        });
    }
}

加减器
package com.example.shop_month.ui.activity;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.shop_month.R;

public class CalculatorView extends LinearLayout implements View.OnClickListener {
private Button btn_add;
private Button btn_decrease;
private TextView tv_number;
OnCalCulatorLisenter onCalCulatorLisenter;

public CalculatorView(Context context, AttributeSet attrs) {
    super(context, attrs);
    View rootView = LayoutInflater.from(context).inflate(R.layout.calculator_layout, this);
    btn_add = rootView.findViewById(R.id.btn_add);
    btn_decrease = rootView.findViewById(R.id.btn_decrease);
    tv_number = rootView.findViewById(R.id.tv_number);
    btn_add.setOnClickListener(this);
    btn_decrease.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    String string = tv_number.getText().toString();
    int number = Integer.parseInt(string);
    switch (v.getId()) {
        case R.id.btn_decrease:
            //减
            number = number - 1;
            //判断
            if (number < 0) {
                number = 0;
                tv_number.setText(String.valueOf(number));
            }
            tv_number.setText(String.valueOf(number));
            //解扣毁掉
            onCalCulatorLisenter.onDeress(number);
            break;
        case R.id.btn_add:
            number = number + 1;
            tv_number.setText(String.valueOf(number));
            //接口回电
            onCalCulatorLisenter.onAdd(number);
            break;
    }

}
public interface OnCalCulatorLisenter {
    //减少
    public void onDeress(int number);

    public void onAdd(int number);

}

public void setOnCalCulatorLisenter(OnCalCulatorLisenter onCalCulatorLisenter) {
    this.onCalCulatorLisenter = onCalCulatorLisenter;
}

}
二级接口
http://www.wanandroid.com/tools/mockapi/6523/restaurant-list

猜你喜欢

转载自blog.csdn.net/qq_42805722/article/details/88286460