购物车实现

//购物车view层

public interface MainSelect {
    void getSelectBean(MySelectBean mySelectBean);
}
//购物车activity
 
 
public class MyGouWuCheActivity extends AppCompatActivity implements MainSelect, View.OnClickListener,MainDingDan {

    private MyExpandableListView myexpandable_listview;
    private CheckBox check_all;
    private TextView text_sumprice;
    private TextView text_sumnum;
    private PresenterSelect presenterSelect;
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what==0){
                MyPriceSumNum myPriceSumNum= (MyPriceSumNum) msg.obj;
                text_sumprice.setText("合计"+myPriceSumNum.getPrice());
                text_sumnum.setText("去结算("+myPriceSumNum.getNum()+")");
            }

        }
    };
    private MyGouWuCheAdapter adapter;
    private MySelectBean mySelectBean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_gou_wu_che);
        myexpandable_listview = findViewById(R.id.myexpandable_listview);
        check_all = findViewById(R.id.check_all);
        text_sumprice = findViewById(R.id.text_sumprice);
        text_sumnum = findViewById(R.id.text_sumnum);

        check_all.setOnClickListener(this);
        text_sumnum.setOnClickListener(this);
        presenterSelect = new PresenterSelect(this);


    }

    @Override
    protected void onResume() {
        super.onResume();

        presenterSelect.getSelectUrl(ApiUrl.select);
    }

    @Override
    public void getSelectBean(final MySelectBean mySelectBean) {
        this.mySelectBean = mySelectBean;
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (mySelectBean!=null){

                    for (int i=0;i<mySelectBean.getData().size();i++){
                        if (ChildInGroup(mySelectBean,i)){
                            mySelectBean.getData().get(i).setCheck_group(true);
                        }
                    }
                    check_all.setChecked(myGroupChecked(mySelectBean));
                    adapter = new MyGouWuCheAdapter(MyGouWuCheActivity.this, mySelectBean,presenterSelect,handler);
                    myexpandable_listview.setAdapter(adapter);
                    for (int i=0;i<mySelectBean.getData().size();i++){
                        myexpandable_listview.expandGroup(i);
                    }

                    adapter.setPriceNum();

                }
            }
        });




    }

    private boolean myGroupChecked(MySelectBean mySelectBean) {
        List<MySelectBean.DataBean> data = mySelectBean.getData();
        for (int i=0;i<data.size();i++){
            if (!data.get(i).isCheck_group()){
                return false;
            }
        }

        return true;
    }

    private boolean ChildInGroup(MySelectBean mySelectBean, int i) {
        List<MySelectBean.DataBean.ListBean> list = mySelectBean.getData().get(i).getList();
        for (int j=0;j<list.size();j++){
            if (list.get(j).getSelected()==0){
                return false;
            }
        }
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.check_all:
                adapter.setchildcheckAll(check_all.isChecked());
                break;
            case R.id.text_sumnum:
                double price=0;
                int num=0;
                for (int i=0;i<mySelectBean.getData().size();i++){
                    List<MySelectBean.DataBean.ListBean> listBeans = mySelectBean.getData().get(i).getList();
                    for (int j=0;j<listBeans.size();j++){
                        price+=listBeans.get(j).getBargainPrice()*listBeans.get(j).getNum();
                        num+=listBeans.get(j).getNum();
                    }
                }
                DecimalFormat decimalFormat = new DecimalFormat("0.00");
                String format = decimalFormat.format(price);
                Log.d("+++++++++++++",format);
                PresenterDingDan presenterDingDan = new PresenterDingDan(this);
                presenterDingDan.getCreateUrl(ApiUrl.create,format);
                break;
        }
    }

    @Override
    public void getCreateBean(MyCreateDingDanBean myCreateDingDanBean) {
        if (myCreateDingDanBean!=null){
            if (myCreateDingDanBean.getCode().equals("0")){
                Intent intent = new Intent(MyGouWuCheActivity.this, DingDanActivity.class);
                startActivity(intent);
            }else {
                Toast.makeText(MyGouWuCheActivity.this,myCreateDingDanBean
                        .getMsg(),Toast.LENGTH_LONG).show();
            }

        }
    }

    @Override
    public void getDingDanLieBiaoBean(MyDingDanLieBiaoBean myDingDanLieBiaoBean) {

    }
}
//presenter层接口
 
 
public interface PresenterSelectPort {
    void getSelectBean(MySelectBean mySelectBean);
}
//presenter实体类
 
 
public class PresenterSelect implements PresenterSelectPort{
    private MainSelect mainSelect;
    private final ModelSelect modelSelect;

    public PresenterSelect(MainSelect mainSelect) {
        modelSelect = new ModelSelect(this);
        this.mainSelect = mainSelect;
    }

    public void getSelectUrl(String select) {
        modelSelect.getSelectUrl(select);
    }

    @Override
    public void getSelectBean(MySelectBean mySelectBean) {
        mainSelect.getSelectBean(mySelectBean);
    }
}
//model层
 
 
public class ModelSelect {
    private PresenterSelect presenterSelect;

    public ModelSelect(PresenterSelect presenterSelect) {

        this.presenterSelect = presenterSelect;
    }

    public void getSelectUrl(String select) {
        Map<String, String> params=new HashMap<>();
        params.put("uid","4427");
//自己创建bean类  select购物车接口
        OkHttp3Util.doPost(select, params, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()){
                    String json = response.body().string();
                    MySelectBean mySelectBean = new Gson().fromJson(json, MySelectBean.class);
                    presenterSelect.getSelectBean(mySelectBean);
                }
            }
        });
    }
}
//购物车的适配器
 
 
public class MyGouWuCheAdapter extends BaseExpandableListAdapter {
    private final Context context;
    private final MySelectBean mySelectBean;
    private PresenterSelect presenterSelect;
    private Handler handler;
    private int indexchild;
    private int childAll;

    public MyGouWuCheAdapter(Context context, MySelectBean mySelectBean, PresenterSelect presenterSelect, Handler handler) {

        this.context = context;
        this.mySelectBean = mySelectBean;
        this.presenterSelect = presenterSelect;
        this.handler = handler;
    }

    @Override
    public int getGroupCount() {
        return mySelectBean.getData().size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return mySelectBean.getData().get(groupPosition).getList().size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return mySelectBean.getData().get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return mySelectBean.getData().get(groupPosition).getList().get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View view, ViewGroup parent) {
        final MyGroupHolder holder;
        if (view==null){
            view=View.inflate(context, R.layout.item_group,null);
            holder=new MyGroupHolder();
            holder.check_group=view.findViewById(R.id.check_group);
            holder.text_group=view.findViewById(R.id.text_group);
            view.setTag(holder);
        }else {
            holder= (MyGroupHolder) view.getTag();
        }
        holder.check_group.setChecked(mySelectBean.getData().get(groupPosition).isCheck_group());
        holder.text_group.setText(mySelectBean.getData().get(groupPosition).getSellerName());
        holder.check_group.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                indexchild = 0;
                MySelectBean.DataBean dataBean = mySelectBean.getData().get(groupPosition);
                boolean checked = holder.check_group.isChecked();
                childGroupAll(dataBean,checked);
            }
        });
        return view;
    }
    private void childGroupAll(final MySelectBean.DataBean dataBean, final boolean checked) {
        final MySelectBean.DataBean.ListBean listBean = dataBean.getList().get(indexchild);
        Map<String, String> params=new HashMap<>();
        params.put("uid","4427");
        params.put("sellerid", String.valueOf(listBean.getSellerid()));
        params.put("pid", String.valueOf(listBean.getPid()));
        params.put("selected", String.valueOf(checked?1:0));
        params.put("num",String.valueOf(listBean.getNum()));
        OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()){
                    indexchild++;
                    if (indexchild<dataBean.getList().size()){
                        childGroupAll(dataBean,checked);
                    }else {
                        presenterSelect.getSelectUrl(ApiUrl.select);
                    }
                }
            }
        });
    }
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup parent) {
        MyChildHolder holder;
        if (view==null){
            view=View.inflate(context,R.layout.item_child,null);
            holder=new MyChildHolder();
            holder.check_child=view.findViewById(R.id.check_child);
            holder.image_child=view.findViewById(R.id.image_child);
            holder.text_titlechild=view.findViewById(R.id.text_titlechild);
            holder.text_pricechild=view.findViewById(R.id.text_pricechild);
            holder.text_jianchild=view.findViewById(R.id.text_jianchild);
            holder.text_numchild=view.findViewById(R.id.text_numchild);
            holder.text_jiachild=view.findViewById(R.id.text_jiachild);
            holder.text_delete=view.findViewById(R.id.text_delete);
            view.setTag(holder);
        }else {
            holder= (MyChildHolder) view.getTag();
        }
        final MySelectBean.DataBean.ListBean listBean = mySelectBean.getData().get(groupPosition).getList().get(childPosition);
        String[] split = listBean.getImages().split("\\|");
        Glide.with(context).load(split[0]).into(holder.image_child);
        holder.text_titlechild.setText(listBean.getTitle());
        holder.text_pricechild.setText("¥"+listBean.getBargainPrice());
        holder.check_child.setChecked(listBean.getSelected()==0?false:true);
        holder.text_numchild.setText(listBean.getNum()+"");


        holder.check_child.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //uid=71&sellerid=1&pid=1&selected=0&num=10
                Map<String, String> params=new HashMap<>();
                params.put("uid","4427");
                params.put("sellerid", String.valueOf(listBean.getSellerid()));
                params.put("pid", String.valueOf(listBean.getPid()));
                params.put("selected", String.valueOf(listBean.getSelected()==0?1:0));
                params.put("num",String.valueOf(listBean.getNum()));
                OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()){
                            presenterSelect.getSelectUrl(ApiUrl.select);
                        }
                    }
                });
            }
        });
        holder.text_jianchild.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int num = listBean.getNum();
                if (num==1){
                    return;
                }
                Map<String, String> params=new HashMap<>();
                params.put("uid","4427");
                params.put("sellerid", String.valueOf(listBean.getSellerid()));
                params.put("pid", String.valueOf(listBean.getPid()));
                params.put("selected", String.valueOf(listBean.getSelected()));
                params.put("num",String.valueOf(num-1));
                OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()){
                            presenterSelect.getSelectUrl(ApiUrl.select);
                        }
                    }
                });
            }
        });
        holder.text_jiachild.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Map<String, String> params=new HashMap<>();
                params.put("uid","4427");
                params.put("sellerid", String.valueOf(listBean.getSellerid()));
                params.put("pid", String.valueOf(listBean.getPid()));
                params.put("selected", String.valueOf(listBean.getSelected()));
                params.put("num",String.valueOf(listBean.getNum()+1));
                OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                    }
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()){
                            presenterSelect.getSelectUrl(ApiUrl.select);
                        }
                    }
                });
            }
        });
        holder.text_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Map<String, String> params=new HashMap<>();
                params.put("uid","4427");
                params.put("pid", String.valueOf(listBean.getPid()));
                OkHttp3Util.doPost(ApiUrl.delete, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                    }
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()){

                            presenterSelect.getSelectUrl(ApiUrl.select);
                        }
                    }
                });
            }
        });
        return view;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
    public void setPriceNum() {
        double price=0;
        int num=0;
        for (int i=0;i<mySelectBean.getData().size();i++){
            List<MySelectBean.DataBean.ListBean> listBeans = mySelectBean
                    .getData().get(i).getList();
            for (int j=0;j<listBeans.size();j++){
                if (listBeans.get(j).getSelected()==1){
                    price+=listBeans.get(j).getBargainPrice()*listBeans
                            .get(j).getNum();
                    num+=listBeans.get(j).getNum();
                }
            }
        }
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        String format = decimalFormat.format(price);

        MyPriceSumNum myPriceSumNum = new MyPriceSumNum(format, num);
        Message msg=Message.obtain();
        msg.obj=myPriceSumNum;
        msg.what=0;
        handler.sendMessage(msg);
    }
    public void setchildcheckAll(boolean checked) {
        childAll = 0;
        ArrayList<MySelectBean.DataBean.ListBean> listBeans = new ArrayList<>();
        for (int i=0;i<mySelectBean.getData().size();i++){
            MySelectBean.DataBean dataBean = mySelectBean.getData().get(i);
            for (int j=0;j<dataBean.getList().size();j++){
                listBeans.add(dataBean.getList().get(j));
            }
        }
        AllChild(checked,listBeans);
    }
    private void AllChild(final boolean checked, final ArrayList<MySelectBean.DataBean.ListBean> listBeans) {
        MySelectBean.DataBean.ListBean listBean = listBeans.get(childAll);
        Map<String, String> params=new HashMap<>();
        params.put("uid","4427");
        params.put("sellerid", String.valueOf(listBean.getSellerid()));
        params.put("pid", String.valueOf(listBean.getPid()));
        params.put("selected", String.valueOf(checked?1:0));
        params.put("num",String.valueOf(listBean.getNum()));
        OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()){
                    childAll++;
                    if (childAll<listBeans.size()){
                        AllChild(checked,listBeans);
                    }else {
                        presenterSelect.getSelectUrl(ApiUrl.select);
                    }
                }
            }
        });
    }
    class MyGroupHolder{
        CheckBox check_group;
        TextView text_group;
    }
    class MyChildHolder{
        CheckBox check_child;
        ImageView image_child;
        TextView text_titlechild;
        TextView text_pricechild;
        TextView text_jianchild;
        TextView text_numchild;
        TextView text_jiachild;
        TextView text_delete;
    }
}
//订单实现可参考http://blog.csdn.net/wei844067872/article/details/79059193
//购物布局http://blog.csdn.net/wei844067872/article/details/79083827
 
 

发布了21 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/wei844067872/article/details/79083627