自定义view肯德基adapter

自定义view肯德基adapter
package com.ang.shoppsecond.view.adapter;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
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.ang.shoppsecond.R;
import com.ang.shoppsecond.model.bean.GoodBean;
import com.bumptech.glide.Glide;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: L丶Ang
 * @Date: 2019/3/7 10:05:22
 * @Description:
 */
public class MyAdapter extends BaseExpandableListAdapter {
    private Context mcontext;
    private GoodBean arr;
    private float totalPrice = 0;

    public MyAdapter(Context mcontext) {
        this.mcontext = mcontext;
    }
    public void setData(GoodBean goodBean){
        this.arr=goodBean;
        //Log.e("my",goodBean.getData().toString()+"");
    }
    private CheckBox mcheckbox;
    public void setCheckBox(CheckBox checkBox){
        this.mcheckbox=checkBox;
        mcheckbox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckBox checkBox1= (CheckBox) view;
                sumprice(checkBox1.isChecked());
                selectAll(checkBox1.isChecked());

            }
        });
    }
    private TextView mtextview;
    public void setTextView(TextView textView){
        this.mtextview=textView;
    }

    private void selectAll(boolean checked) {
        for (int i = 0; i <arr.getData().size() ; i++) {
            GoodBean.DataBean dataBean = arr.getData().get(i);
            dataBean.setIscheck(checked);
            for (int j = 0; j <dataBean.getSpus().size() ; j++) {
                GoodBean.DataBean.SpusBean spusBean = dataBean.getSpus().get(j);
                spusBean.setCheck(checked);
            }
        }
        notifyDataSetChanged();
    }

    @Override
    public int getGroupCount() {
        if(arr == null){
            return 0;
        }
        return arr.getData().size();
    }

    @Override
    public int getChildrenCount(int i) {
        if(arr == null){
            return 0;
        }
        return arr.getData().get(i).getSpus().size();
    }

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

    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        GroupViewHolder vh;
        if(view==null){
            view= LayoutInflater.from(mcontext).inflate(R.layout.item_group,null);
            vh=new GroupViewHolder();
            vh.checkBox=view.findViewById(R.id.checkbox_group);
            vh.name=view.findViewById(R.id.group_name);
            view.setTag(vh);
        }else{
            vh= (GroupViewHolder) view.getTag();
        }
        vh.checkBox.setChecked(arr.getData().get(i).isIscheck());
        vh.name.setText(arr.getData().get(i).getName());
        vh.checkBox.setTag(i);
        vh.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckBox checkBox= (CheckBox) view;
                boolean checked = checkBox.isChecked();
                int groupPosition=Integer.parseInt(checkBox.getTag().toString());

                    for (int j = 0; j < arr.getData().get(groupPosition).getSpus().size(); j++) {
                        String praise_num1 = arr.getData().get(groupPosition).getSpus().get(j).getPraise_num();
                        int i2 = Integer.parseInt(praise_num1);
                        if(checked) {
                            totalPrice += i2;
                        }else{
                            totalPrice -= i2;
                        }
                    }
                    mtextview.setText("总价:¥"+totalPrice);

                arr.getData().get(groupPosition).setIscheck(checked);
                selectGroup(groupPosition,checked);
                boolean selectAllGroup = isSelectAllGroup();
                mcheckbox.setChecked(selectAllGroup);
                notifyDataSetChanged();
            }
        });
        return view;
    }

    private boolean isSelectAllGroup() {
        for (int i = 0; i <arr.getData().size() ; i++) {
            GoodBean.DataBean dataBean = arr.getData().get(i);
            boolean ischeck = dataBean.isIscheck();
            if(!ischeck){
                return false;
            }
        }
        return true;
    }

    private void selectGroup(int groupPosition, boolean checked) {
        for (int i = 0; i <arr.getData().get(groupPosition).getSpus().size() ; i++) {
            GoodBean.DataBean.SpusBean spusBean = arr.getData().get(groupPosition).getSpus().get(i);
            spusBean.setCheck(checked);
        }
    }

    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
        ChildViewHolder vh;
        if(view==null){
            view=LayoutInflater.from(mcontext).inflate(R.layout.item_child,null);
            vh=new ChildViewHolder();
            vh.checkBox=view.findViewById(R.id.checkbox_child);
            vh.name=view.findViewById(R.id.child_name);
            vh.price=view.findViewById(R.id.child_price);
            vh.img=view.findViewById(R.id.img);
            view.setTag(vh);
        }else{
            vh= (ChildViewHolder) view.getTag();
        }
        vh.name.setText(arr.getData().get(i).getSpus().get(i1).getName());
        vh.price.setText("¥:"+arr.getData().get(i).getSpus().get(i1).getPraise_num());
        vh.checkBox.setChecked(arr.getData().get(i).getSpus().get(i1).isCheck());
        Glide.with(mcontext).load(arr.getData().get(i).getSpus().get(i1).getPic_url()).into(vh.img);
        vh.checkBox.setTag(i+"#"+i1);
        vh.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckBox checkBox= (CheckBox) view;
                String tag= (String) checkBox.getTag();
                int  groupPosition = Integer.parseInt(tag.split("#")[0]);
                int  childPosition = Integer.parseInt(tag.split("#")[1]);
                GoodBean.DataBean dataBean = arr.getData().get(groupPosition);
                GoodBean.DataBean.SpusBean spusBean = dataBean.getSpus().get(childPosition);
                spusBean.setCheck(checkBox.isChecked());
                String praise_num = spusBean.getPraise_num();
                int price = Integer.parseInt(praise_num);
                if(checkBox.isChecked()){
                    totalPrice += price;
                }else{
                    totalPrice -= price;
                }
                mtextview.setText("总价:¥"+totalPrice);
                boolean selectGruop = isSelectGruop(groupPosition);
                dataBean.setIscheck(selectGruop);
                boolean selectAllGroup = isSelectAllGroup();
                mcheckbox.setChecked(selectAllGroup);
                notifyDataSetChanged();
            }
        });
        return view;
    }

    private void sumprice(boolean checked) {
        totalPrice=0;
        for (int i = 0; i <arr.getData().size() ; i++) {
            GoodBean.DataBean dataBean = arr.getData().get(i);
            for (int j = 0; j < dataBean.getSpus().size(); j++) {
                String praise_num = dataBean.getSpus().get(j).getPraise_num();
                int price = Integer.parseInt(praise_num);
                if(checked){
                    totalPrice += price;
                }else{
                    totalPrice = 0;
                }
            }
        }
        mtextview.setText("总价:¥"+totalPrice);

    }

    private boolean isSelectGruop(int gruopPosition){
        for (int i = 0; i <arr.getData().get(gruopPosition).getSpus().size() ; i++) {
            GoodBean.DataBean.SpusBean spusBean = arr.getData().get(gruopPosition).getSpus().get(i);
            boolean check = spusBean.isCheck();
            if(!check){
                return false;
            }
        }
        return true;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return false;
    }
    static class GroupViewHolder{
        TextView name;
        CheckBox checkBox;
    }
    static class ChildViewHolder{
        TextView name,price;
        CheckBox checkBox;
        ImageView img;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40432465/article/details/89059804