//MainACtivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private String url = “http://www.zhaoapi.cn/product/getCarts”;
private ExpandableListView elv;
private Button btn_cart_pay;
public MyAdapter adapter;
public CheckBox cb_cart_all_select;
private TextView tv_cart_total_price;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
elv=findViewById(R.id.el_cart);
btn_cart_pay = findViewById(R.id.btn_cart_pay);
cb_cart_all_select = findViewById(R.id.cb_cart_all_select);
tv_cart_total_price = findViewById(R.id.tv_cart_total_price);
cb_cart_all_select.setOnClickListener(this);
HashMap<String,String> map=new HashMap<>();
map.put("uid","71");
HttpUtils.getInstence().DoPost(url, map, new ICanBack() {
@Override
public void success(String json) {
Gson gson = new Gson();
News news = gson.fromJson(json, News.class);
if ("0".equals(news.getCode())){
//得到数据集合
List<News.DataBean> data = news.getData();
//数据适配
adapter = new MyAdapter(data);
refreshSelectedAndTotalPriceAndTotalNumber();
//对适配器设置监听,监听加减按钮,商家的复选框,子条目的复选框的改变
adapter.setOnCKChangeListener(new MyAdapter.onCKChangeListener() {
@Override
public void onGroupCheckedChange(int groupPosition) {
boolean selected = adapter.isSelected(groupPosition);
adapter.groupCheckBoxChecked(groupPosition,!selected);
adapter.notifyDataSetChanged();
refreshSelectedAndTotalPriceAndTotalNumber();
}
@Override
public void onChilderCheckedChange(int groupPosition, int childPosition) {
adapter.ChilderCheckBoxChecked(groupPosition,childPosition);
adapter.notifyDataSetChanged();
refreshSelectedAndTotalPriceAndTotalNumber();
}
@Override
public void onNumberChange(int groupPosition, int childPosition, int number) {
adapter.onChangeNumber(groupPosition,childPosition,number);
adapter.notifyDataSetChanged();
refreshSelectedAndTotalPriceAndTotalNumber();
}
});
//设置adapter
elv.setAdapter(adapter);
//展开二级列表
for(int x = 0;x<data.size();x++){
elv.expandGroup(x);
}
}
}
@Override
public void failed(Exception e) {
}
});
}
//B.刷新底部全选框,textVIew和Button的UI,改变了CheckBox状态,总价,总数量
private void refreshSelectedAndTotalPriceAndTotalNumber() {
//去判断是否所有的商品都被选中
boolean allProductsSelected = adapter.isAllSelected();
//把这个值设置给checkBox
cb_cart_all_select.setChecked(allProductsSelected);
//计算总计
Double zPrice = adapter.onZPrice();
tv_cart_total_price.setText("总计" + zPrice);
//计算总数量
int totalNumber = adapter.onZNumber();
btn_cart_pay.setText("去结算(" + totalNumber + ")");
}
//底部全选
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cb_cart_all_select:
boolean allProductsSelected = adapter.isAllSelected();
adapter.buttonCheckBoxChecked(!allProductsSelected);
adapter.notifyDataSetChanged();
//刷新底部的数据显示
refreshSelectedAndTotalPriceAndTotalNumber();
break;
}
}
}
//布局
<ExpandableListView
android:id="@+id/el_cart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="60dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:background="#eeeeee"
android:gravity="center_vertical">
<CheckBox
android:id="@+id/cb_cart_all_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选" />
<TextView
android:id="@+id/tv_cart_total_price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="20dp"
android:text="合计:¥0.00" />
<Button
android:id="@+id/btn_cart_pay"
android:layout_width="100dp"
android:layout_height="match_parent"
android:text="去结算(0)" />
</LinearLayout>