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