MVP契约类

本文介绍了如何在Android应用中使用MVP模式实现契约类,包括View接口、Presenter接口以及Model接口的定义。通过具体例子如AddSubLayout、CarBean和Constans等,展示了如何在MainActivity中运用这些契约类进行数据交互和视图操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.activity.MainActivity">

    <FrameLayout
        android:id="@+id/fl"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9">
    </FrameLayout>

    <RadioGroup
        android:id="@+id/rg"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <RadioButton
            android:checked="true"
            android:background="@drawable/sel_bj"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:text="购物车" />

        <RadioButton
            android:background="@drawable/sel_bj"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:text="我的" />


    </RadioGroup>


</LinearLayout>

//AddSubLayout
public class AddSubLayout extends LinearLayout implements View.OnClickListener {

    private TextView mAddBtn,mSubBtn;
    private TextView mNumText;
    private AddSubListener addSubListener;


    public AddSubLayout(Context context) {
        super(context);
        initView();
    }

    public AddSubLayout(Context context,  AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    public AddSubLayout(Context context,  AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }

    private void initView(){
        //加载layout布局,第三个参数ViewGroup一定写成this
        View view = View.inflate(getContext(),R.layout.car_add_sub,this);

        mAddBtn = view.findViewById(R.id.btn_add);
        mSubBtn = view.findViewById(R.id.btn_sub);
        mNumText = view.findViewById(R.id.text_number);
        mAddBtn.setOnClickListener(this);
        mSubBtn.setOnClickListener(this);

    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);

        int width = r-l;//getWidth();
        int height = b-t;//getHeight();
    }

    @Override
    public void onClick(View v) {
        int number = Integer.parseInt(mNumText.getText().toString());

        switch (v.getId()){
            case R.id.btn_add:
                number++;
                mNumText.setText(number+"");
                break;
            case R.id.btn_sub:
                if (number==0){
                    Toast.makeText(getContext(),"数量不能小于0",Toast.LENGTH_LONG).show();
                    return;
                }
                number--;
                mNumText.setText(number+"");
                break;
        }

        if (addSubListener!=null){
            addSubListener.addSub(number);
        }

    }

    public void setCount(int count) {
        mNumText.setText(count+"");
    }

    public void setAddSubListener(AddSubListener addSubListener) {
        this.addSubListener = addSubListener;
    }

    public interface AddSubListener{
        void addSub(int count);
    }
}

//CarAdapter

public class CarAdapter extends BaseExpandableListAdapter {

    private Context mContext;
    private List<CarBean.DataBean> mShopList = new ArrayList<>();

    public CarAdapter(Context mContext) {
        this.mContext = mContext;
    }

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

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

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

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return mShopList.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 false;
    }

    public void addAll(List<CarBean.DataBean> data){
        if (data!=null){
            mShopList.addAll(data);
        }
    }
    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GroupHodler hodler=null;
        if (convertView==null){
            convertView = View.inflate(parent.getContext(), R.layout.cart2_group_item, null);
            hodler = new GroupHodler();
            hodler.checkBox=convertView.findViewById(R.id.checkBox);
            convertView.setTag(hodler);
        }else {
            hodler = (GroupHodler) convertView.getTag();
        }

        final CarBean.DataBean dataBean = mShopList.get(groupPosition);
        //给商家赋值
        hodler.checkBox.setText(dataBean.getSellerName());
        //设置商家选中状态
        hodler.checkBox.setChecked(dataBean.isCheck());
        //经过修改改为点击事件
        hodler.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckBox checkBox= (CheckBox) view;
                dataBean.setCheck(checkBox.isChecked());
                //得到商品信息
                List<CarBean.DataBean.ListBean> list = mShopList.get(groupPosition).getList();
                //商品信息赋值循环
                for (int i = 0; i < list.size(); i++) {
                    list.get(i).setSelected(checkBox.isChecked()? 1:0);
                }
                notifyDataSetChanged();


                //计算价格
                calculatePrice();
            }


        });

        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ChildHolder childHolder = null;
        if (convertView == null) {
            convertView = View.inflate(parent.getContext(), R.layout.cart_item, null);
            childHolder = new ChildHolder();
            childHolder.text = convertView.findViewById(R.id.text);
            childHolder.price = convertView.findViewById(R.id.text_price);
            childHolder.image = convertView.findViewById(R.id.image);
            childHolder.addSub = convertView.findViewById(R.id.add_sub_layout);
            childHolder.check = convertView.findViewById(R.id.cart_goods_check);
            convertView.setTag(childHolder);
        } else {
            childHolder = (ChildHolder) convertView.getTag();
        }
        //进行赋值
        final CarBean.DataBean.ListBean listBean = mShopList.get(groupPosition).getList().get(childPosition);
        //商品标题
        childHolder.text.setText(listBean.getTitle());
        //单价
        childHolder.price.setText("单价:" + listBean.getPrice());
        String imageurl = "https" + listBean.getImages().split("https")[1];
        Log.i("dt", "imageUrl: " + imageurl);
        //加载图片
        imageurl = imageurl.substring(0, imageurl.lastIndexOf(".jpg") + ".jpg".length());
        Glide.with(mContext).load(imageurl).into(childHolder.image);

        //设置复选框   点击选中, 价格发生变化(计算价格 )
        //修改之后
        childHolder.check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckBox checkBox = (CheckBox) view;
                listBean.setSelected(checkBox.isChecked() ? 1 : 0);
                //计算价格
                calculatePrice();
            }
        });

        //设置加减器
        childHolder.addSub.setCount(listBean.getCount());
        childHolder.addSub.setAddSubListener(new AddSubLayout.AddSubListener() {
            @Override
            public void addSub(int count) {
                listBean.setNum(count);
                //计算价格
                calculatePrice();
            }
        });


        if (listBean.getSelected() == 0) {
            childHolder.check.setChecked(false);
        } else {
            childHolder.check.setChecked(true);
        }


        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }

    //内部父类
    class GroupHodler {
        CheckBox checkBox;
    }

    //内部子类
    class ChildHolder {
        CheckBox check;
        TextView text;
        TextView price;
        ImageView image;
        AddSubLayout addSub;
    }

    //计算价格
    private void calculatePrice() {
        //设置初始值
        double totalPrice = 0;
        //循环的商家
        for (int i = 0; i < mShopList.size(); i++) {
            CarBean.DataBean dataBean = mShopList.get(i);
            //循环商品
            for (int j = 0; j < dataBean.getList().size(); j++) {
                CarBean.DataBean.ListBean listBean = dataBean.getList().get(j);
                //如果是选中状态
                if (listBean.getSelected() == 1) {
                    totalPrice = totalPrice + listBean.getNum() * listBean.getPrice();
                }
            }
        }

        if (totalPriceListener != null)
            totalPriceListener.totalPrice(totalPrice);



    }

    //接口回调
    public interface TotalPriceListener {
        void totalPrice(double totalPrice);
    }

    private TotalPriceListener totalPriceListener;

    public void setTotalPriceListener(TotalPriceListener totalPriceListener) {
        this.totalPriceListener = totalPriceListener;
    }


    //全部选中或者取消
    public void checkAll(boolean isCheck) {
        //循环商家爱
        for (int i = 0; i < mShopList.size(); i++) {
            CarBean.DataBean dataBean = mShopList.get(i);
            dataBean.setCheck(isCheck);
            for (int j = 0; j < dataBean.getList().size(); j++) {
                CarBean.DataBean.ListBean listBean = dataBean.getList().get(j);
                listBean.setSelected(isCheck ? 1 : 0);
            }
        }
        notifyDataSetChanged();
        calculatePrice();
    }
}

MainActivity

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.fl)
    FrameLayout fl;
    @BindView(R.id.rg)
    RadioGroup rg;
    private Frag_01 frag_01;
    private Frag_02 frag_02;
    private FragmentManager manager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        ArrayList<Fragment> flist = new ArrayList<>();
        frag_01 = new Frag_01();
        frag_02 = new Frag_02();

        manager = getSupportFragmentManager();
        FragmentTransaction f1 = manager.beginTransaction();
        f1.add(R.id.fl,frag_01).show(frag_01);
        f1.add(R.id.fl,frag_02).hide(frag_02);
        f1.commit();

        rg.check(rg.getChildAt(0).getId());
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                FragmentTransaction f2 = manager.beginTransaction();
                switch (checkedId){
                    case 1:
                        f2.show(frag_01).hide(frag_02);
                        break;
                    case 2:
                        f2.show(frag_02).hide(frag_01);
                        break;
                }
                f2.commit();
            }
        });
    }
}

bean
public class CarBean {

/**
 * msg : 请求成功
 * code : 0
 * data : [{"list":[{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"}],"sellerName":"商家1","sellerid":"1"},{"list":[{"bargainPrice":6666,"createtime":"2017-10-10T16:01:31","detailUrl":"https://item.m.jd.com/product/5089273.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t8284/363/1326459580/71585/6d3e8013/59b857f2N6ca75622.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9346/182/1406837243/282106/68af5b54/59b8480aNe8af7f5c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8434/54/1359766007/56140/579509d9/59b85801Nfea207db.jpg!q70.jpg","num":1,"pid":46,"price":234,"pscid":39,"selected":0,"sellerid":2,"subhead":"【iPhone新品上市】新一代iPhone,让智能看起来更不一样","title":"Apple iPhone 8 Plus (A1864) 64GB 金色 移动联通电信4G手机"}],"sellerName":"商家2","sellerid":"2"},{"list":[{"bargainPrice":1599,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/1993026402.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t5863/302/8961270302/97126/41feade1/5981c81cNc1b1fbef.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7003/250/1488538438/195825/53bf31ba/5981c57eN51e95176.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5665/100/8954482513/43454/418611a9/5981c57eNd5fc97ba.jpg!q70.jpg","num":1,"pid":47,"price":111,"pscid":39,"selected":0,"sellerid":3,"subhead":"碳黑色 32GB 全网通 官方标配   1件","title":"锤子 坚果Pro 特别版 巧克力色 酒红色 全网通 移动联通电信4G手机 双卡双待 碳黑色 32GB 全网通"}],"sellerName":"商家3","sellerid":"3"},{"list":[{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":7,"pid":3,"price":198,"pscid":1,"selected":0,"sellerid":19,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家19","sellerid":"19"}]
 */

private String msg;
private String code;
private List<DataBean> data;

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

public List<DataBean> getData() {
    return data;
}

public void setData(List<DataBean> data) {
    this.data = data;
}

public static class DataBean {
    /**
     * list : [{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"}]
     * sellerName : 商家1
     * sellerid : 1
     */

    private String sellerName;
    private String sellerid;
    private List<ListBean> list;

    boolean check;

    public boolean isCheck() {
        return check;
    }

    public void setCheck(boolean check) {
        this.check = check;
    }

    public String getSellerName() {
        return sellerName;
    }

    public void setSellerName(String sellerName) {
        this.sellerName = sellerName;
    }

    public String getSellerid() {
        return sellerid;
    }

    public void setSellerid(String sellerid) {
        this.sellerid = sellerid;
    }

    public List<ListBean> getList() {
        return list;
    }

    public void setList(List<ListBean> list) {
        this.list = list;
    }

    public static class ListBean {
        /**
         * bargainPrice : 99
         * createtime : 2017-10-14T21:38:26
         * detailUrl : https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends
         * images : https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg
         * num : 1
         * pid : 45
         * price : 2999
         * pscid : 39
         * selected : 0
         * sellerid : 1
         * subhead : 高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!
         * title : 一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机
         */

        private double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int num;
        private int pid;
        private double price;
        private int pscid;
        private int selected;
        private int sellerid;
        private String subhead;
        private String title;

        private int count=1;

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(int bargainPrice) {
            this.bargainPrice = bargainPrice;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getDetailUrl() {
            return detailUrl;
        }

        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
        }

        public String getImages() {
            return images;
        }

        public void setImages(String images) {
            this.images = images;
        }

        public int getNum() {
            return num;
        }

        public void setNum(int num) {
            this.num = num;
        }

        public int getPid() {
            return pid;
        }

        public void setPid(int pid) {
            this.pid = pid;
        }

        public double getPrice() {
            return price;
        }

        public void setPrice(int price) {
            this.price = price;
        }

        public int getPscid() {
            return pscid;
        }

        public void setPscid(int pscid) {
            this.pscid = pscid;
        }

        public int getSelected() {
            return selected;
        }

        public void setSelected(int selected) {
            this.selected = selected;
        }

        public int getSellerid() {
            return sellerid;
        }

        public void setSellerid(int sellerid) {
            this.sellerid = sellerid;
        }

        public String getSubhead() {
            return subhead;
        }

        public void setSubhead(String subhead) {
            this.subhead = subhead;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }
    }
}

}

//契约类

public class IGoodContract {
    //V层
    public interface IGoodView{
        public void goodData(CarBean carBean);
    }

    //P层
    public interface IGoodPresenter<IGoodView>{
        //绑定
        public void atteach(IGoodView iGoodView);
        //解绑
        public void deacth(IGoodView iGoodView);
        //传值
        public void goodData();
    }

    //M层
    public interface IGoodModel{
        public void goodModel(Callback callback);

        //接口
        public interface Callback{
            public void responseData(CarBean carBean);
        }
    }
}

//Constans

public class Constant {
    public static final String URL="http://172.17.8.101:8081/ks/";
}

//IGoodModelInfo

public class IGoodModelInfo implements IGoodContract.IGoodModel {
    @Override
    public void goodModel(final Callback callback) {
//        Retrofit build = new Retrofit.Builder()
////                .baseUrl(Constant.URL)
////                .build();
////        ApiService service = build.create(ApiService.class);
////        Call<ResponseBody> good = service.getGood();
////        good.enqueue(new retrofit2.Callback<ResponseBody>() {
////            @Override
////            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
////                try {
////                    String responseData = response.body().string();
////                    CarBean carBean = new Gson().fromJson(responseData, CarBean.class);
////                    callback.responseData(carBean);
////                } catch (IOException e) {
////                    e.printStackTrace();
////                }
////            }
////
////            @Override
////            public void onFailure(Call<ResponseBody> call, Throwable t) {
////
////            }
////        });

        RetrofitUtil.getInstance()
                .resultEnqueue(ApiService.class, new retrofit2.Callback<ResponseBody>() {
                    @Override
                    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

                        try {
                            String responseData = response.body().string();
                            CarBean carBean = new Gson().fromJson(responseData, CarBean.class);
                            callback.responseData(carBean);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onFailure(Call<ResponseBody> call, Throwable t) {

                    }
                });
    }
}

//IGoodPresenterInfo

public class IGoodPresenterInfo implements IGoodContract.IGoodPresenter<IGoodContract.IGoodView> {
    IGoodContract.IGoodView iGoodView;
    private SoftReference<IGoodContract.IGoodView> iGoodViewSoftReference;
    private IGoodModelInfo iGoodModelInfo;

    @Override
    public void atteach(IGoodContract.IGoodView iGoodView) {
        this.iGoodView=iGoodView;
        iGoodViewSoftReference = new SoftReference<>(iGoodView);
        iGoodModelInfo = new IGoodModelInfo();
    }

    @Override
    public void deacth(IGoodContract.IGoodView iGoodView) {
        iGoodViewSoftReference.clear();
    }

    @Override
    public void goodData() {
        iGoodModelInfo.goodModel(new IGoodContract.IGoodModel.Callback() {
            @Override
            public void responseData(CarBean carBean) {
                iGoodView.goodData(carBean);
            }
        });
    }
}

//ApiService

public interface ApiService {

    //product/getCarts?uid=51
    @GET("product/getCarts?uid=51")
    Call<ResponseBody> getGood();
}

//Frag

public class Frag_01 extends Fragment implements IGoodContract.IGoodView ,CarAdapter.TotalPriceListener{
    @BindView(R.id.list_car)
    ExpandableListView listCar;
    @BindView(R.id.car_check_all)
    CheckBox carCheckAll;
    @BindView(R.id.car_tv_heji)
    TextView carTvHeji;
    @BindView(R.id.car_tv_qujiesuan)
    TextView carTvQujiesuan;
    Unbinder unbinder;
    private IGoodPresenterInfo iGoodPresenterInfo;
    private CarAdapter carAdapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frag_01, container, false);
        unbinder = ButterKnife.bind(this, view);



        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);


        iGoodPresenterInfo = new IGoodPresenterInfo();


        carAdapter = new CarAdapter(getActivity());
        listCar.setAdapter(carAdapter);
        iGoodPresenterInfo.atteach(this);
        iGoodPresenterInfo.goodData();
        carAdapter.setTotalPriceListener(this);
        carCheckAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                carAdapter.checkAll(isChecked);
            }
        });
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }

    @OnClick(R.id.car_tv_qujiesuan)
    public void onViewClicked() {
    }

    @Override
    public void goodData(CarBean carBean) {
        List<CarBean.DataBean> list = carBean.getData();
        carAdapter.addAll(list);

        int size = carBean.getData().size();
        for (int i = 0; i < size; i++) {
            listCar.expandGroup(i);
        }

        carAdapter.notifyDataSetChanged();

    }

    @Override
    public void totalPrice(double totalPrice) {
        carTvHeji.setText(String.valueOf(totalPrice));
    }
}

//Utils

public class RetrofitUtil {

    private final Retrofit retrofit;
    private static RetrofitUtil retrofitUtil;

    private RetrofitUtil(){

        retrofit = new Retrofit.Builder()
                .baseUrl(Constant.URL)
                .build();
    }


    public static RetrofitUtil getInstance(){


        if(null==retrofitUtil){

            synchronized (RetrofitUtil.class){

                if(null==retrofitUtil){

                    retrofitUtil = new RetrofitUtil();
                }
            }
        }

        return retrofitUtil;



    }


//    public ApiService getServiceInstance(ApiService apiService){
//
//        ApiService api = retrofit.create(apiService.getClass());
//        return api;
//    }
//
//
//    public Call<ResponseBody> getCall(ApiService apiService){
//
//        ApiService api = retrofit.create(apiService.getClass());
//        Call<ResponseBody> call = api.getGood();
//        return call;
//    }

    public void resultEnqueue(Class<ApiService> serviceClass, Callback<ResponseBody> callback){

        ApiService api = retrofit.create(serviceClass);
        Call<ResponseBody> call = api.getGood();
        call.enqueue(callback);

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值