----购物车类-----
package com.example.administrator.gouwuche_20171219.view.activity;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.example.administrator.gouwuche_20171219.R;
import com.example.administrator.gouwuche_20171219.model.bean.CartBean;
import com.example.administrator.gouwuche_20171219.model.bean.CountPriceBean;
import com.example.administrator.gouwuche_20171219.presenter.CartPresenter;
import com.example.administrator.gouwuche_20171219.util.ApiUtil;
import com.example.administrator.gouwuche_20171219.view.adapter.CartAdapter;
import com.example.administrator.gouwuche_20171219.view.interfac.CartView;
import com.example.administrator.gouwuche_20171219.view.zidingyi_shitu.CartExpanableListview;
import com.nostra13.universalimageloader.utils.L;
public class CartActivity extends AppCompatActivity implements CartView{
private CartExpanableListview expanable_listview;
private CheckBox check_all;
private TextView text_total;
private TextView text_buy;
private CartPresenter cartPresenter;
private RelativeLayout relative_progress;
private LinearLayout linear_layout;
private CartBean cartBean;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what==0){
countPriceBean = (CountPriceBean) msg.obj;
text_total.setText("合计:¥"+ countPriceBean.getPriceString());
text_buy.setText("去结算("+ countPriceBean.getCount()+")");
}
}
};
private CartAdapter cartAdapter;
private CountPriceBean countPriceBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
//二级列表
expanable_listview = findViewById(R.id.expanable_listview);
//复选框 全选按钮
check_all = findViewById(R.id.check_all);
//合计 价钱
text_total = findViewById(R.id.text_total);
//去结算 数量
text_buy = findViewById(R.id.text_buy);
relative_progress = findViewById(R.id.relative_progress);
linear_layout = findViewById(R.id.linear_layout);
//去掉默认的指示器
expanable_listview.setGroupIndicator(null);
//获取数据 关联p层
cartPresenter = new CartPresenter(this);
//复选框的点击事件
check_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cartAdapter.setAllChildState(check_all.isChecked());
}
});
//点击去结算
text_buy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(CartActivity.this, JieSuanActivity.class);
intent.putExtra("price",countPriceBean.getPriceString());
startActivity(intent);
}
});
}
@Override
protected void onResume() {
super.onResume();
relative_progress.setVisibility(View.VISIBLE);
cartPresenter.getDataUrl(ApiUtil.selGouWuChe);
}
/**
* 解决MVP内存泄漏
*/
@Override
protected void onDestroy() {
super.onDestroy();
//解除绑定
if (cartPresenter!=null){
cartPresenter.destroy();
}
}
@Override
public void success(final CartBean cartBean) {
this.cartBean=cartBean;
this.runOnUiThread(new Runnable() {
@Override
public void run() {
relative_progress.setVisibility(View.GONE);
if (cartBean!=null){
linear_layout.setVisibility(View.VISIBLE);
//1.根据组中子条目是否选中,,,决定该组是否选中...初始化一下每一组中isGroupCheck这个数据
for (int i=0;i<cartBean.getData().size();i++){
if (isAllChildInGroupSelected(i)){
cartBean.getData().get(i).setGroupChecked(true);
}
}
//2.根据每一个组是否选中的状态,,,初始化全选是否选中
check_all.setChecked(isAllGroupChecked());
//设置适配器
cartAdapter = new CartAdapter(CartActivity.this,cartBean,cartPresenter,handler);
expanable_listview.setAdapter(cartAdapter);
//展开
for (int i= 0;i<cartBean.getData().size();i++){
expanable_listview.expandGroup(i);
}
//3.根据子条目是否选中 初始化价格和数量
cartAdapter.sendPriceAndCount();
}else {
//隐藏下面的全选.... 等
linear_layout.setVisibility(View.GONE);
//显示去逛逛,,,添加购物车
Toast.makeText(CartActivity.this,"购物车为空,去逛逛",Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void failed(Exception e) {
Toast.makeText(CartActivity.this,"数据出错",Toast.LENGTH_SHORT).show();
}
private boolean isAllGroupChecked(){
for (int i=0;i<cartBean.getData().size();i++){
if (!cartBean.getData().get(i).isGroupChecked()){
return false;
}
}
return true;
}
/**
* 判断当前组里面所有的子条目是否选中
* @param groupPosition
* @return
*/
private boolean isAllChildInGroupSelected(int groupPosition){
for (int i=0;i<cartBean.getData().get(groupPosition).getList().size();i++){
if (cartBean.getData().get(groupPosition).getList().get(i).getSelected()==0){
return false;
}
}
return true;
}
}
-----适配器-----
package com.example.administrator.gouwuche_20171219.view.adapter;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.administrator.gouwuche_20171219.R;
import com.example.administrator.gouwuche_20171219.model.bean.CartBean;
import com.example.administrator.gouwuche_20171219.model.bean.CountPriceBean;
import com.example.administrator.gouwuche_20171219.presenter.CartPresenter;
import com.example.administrator.gouwuche_20171219.util.ApiUtil;
import com.example.administrator.gouwuche_20171219.util.OkHttp3Util;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* Created by Administrator on 2017/12/19.
*/
public class CartAdapter extends BaseExpandableListAdapter{
private final Handler handler;
private CartPresenter cartPresenter;
Context context;
CartBean cartBean;
private int size;
private int childI;
private int allSize;
private int index;
public CartAdapter(Context context, CartBean cartBean, CartPresenter cartPresenter, Handler handler) {
this.context = context;
this.cartBean = cartBean;
this.cartPresenter=cartPresenter;
this.handler=handler;
}
@Override
public int getGroupCount() {
return cartBean.getData().size();
}
@Override
public int getChildrenCount(int i) {
return cartBean.getData().get(i).getList().size();
}
@Override
public Object getGroup(int i) {
return cartBean.getData().get(i);
}
@Override
public Object getChild(int i, int i1) {
return cartBean.getData().get(i).getList().get(i1);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
final GroupHolder groupHolder;
if (view==null){
groupHolder = new GroupHolder();
view=View.inflate(context, R.layout.group_item_layout,null);
//复选框 一级列表
groupHolder.checkBox=view.findViewById(R.id.check_group);
//商家名称
groupHolder.textView=view.findViewById(R.id.text_group);
view.setTag(groupHolder);
}else {
groupHolder = (GroupHolder) view.getTag();
}
final CartBean.DataBean dataBean = cartBean.getData().get(i);
groupHolder.textView.setText(dataBean.getSellerName());
groupHolder.checkBox.setChecked(dataBean.isGroupChecked());
groupHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
size = dataBean.getList().size();
childI = 0;
updateAllInGroup(groupHolder.checkBox.isChecked(),dataBean);
}
});
return view;
}
private void updateAllInGroup(final boolean checked, final CartBean.DataBean dataBean) {
CartBean.DataBean.ListBean listBean = dataBean.getList().get(childI);
Map<String, String> map=new HashMap<>();
map.put("uid","3690");
map.put("sellerid", String.valueOf(listBean.getSellerid()));
map.put("pid", String.valueOf(listBean.getPid()));
map.put("selected", String.valueOf(chec