购物车提示商品加减

activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_zhou"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.bwie.test.zhouer.ZhouActivity">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.v7.widget.RecyclerView>

    <RelativeLayout
        android:background="#fff"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="50dp">
        <CheckBox
            android:id="@+id/che_all"
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"/>
        <TextView
            android:layout_marginLeft="15dp"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/che_all"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="全选/反选"/>
        <TextView
            android:id="@+id/sumAll"
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="合计"/>
        <TextView
            android:id="@+id/numAll"
            android:layout_width="110dp"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:gravity="center"
            android:background="#ff0000"
            android:textSize="20sp"
            android:textColor="#fff"
            android:text="去结算"/>
    </RelativeLayout>

</RelativeLayout>

item_child

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#fff"
    android:padding="10dp"
    android:layout_width="match_parent"
    android:layout_height="120dp">
    <CheckBox
        android:id="@+id/che_child"
        android:layout_marginLeft="5dp"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/image_child"
        android:layout_toRightOf="@+id/che_child"
        android:layout_marginLeft="15dp"
        android:layout_width="100dp"
        android:layout_height="100dp" />

    <TextView
        android:id="@+id/text_childtitle"
        android:layout_toRightOf="@+id/image_child"
        android:layout_marginLeft="15dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:maxLines="2"
        android:text="1111"/>

    <TextView
        android:id="@+id/text_chidprice"
        android:layout_toRightOf="@+id/image_child"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="15dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textColor="#ff0000"
        android:text="000"/>

    <LinearLayout
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/text_jian"
            android:layout_width="0dp"
            android:layout_weight="2"
            android:paddingTop="2dp"
            android:paddingBottom="2dp"
            android:paddingLeft="6dp"
            android:paddingRight="6dp"
            android:layout_height="wrap_content"
            android:background="@drawable/shape_kuang"
            android:textSize="20sp"
            android:text=""/>

        <TextView
            android:id="@+id/text_childsum"
            android:layout_width="0dp"
            android:layout_weight="3"
            android:paddingTop="2dp"
            android:paddingBottom="2dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:background="@drawable/shape_kuang"
            android:text="1"/>

        <TextView
            android:id="@+id/text_jia"
            android:layout_width="0dp"
            android:layout_weight="2"
            android:paddingTop="2dp"
            android:paddingBottom="2dp"
            android:paddingLeft="6dp"
            android:paddingRight="6dp"
            android:layout_height="wrap_content"
            android:background="@drawable/shape_kuang"
            android:textSize="20sp"
            android:text=""/>
    </LinearLayout>

</RelativeLayout>

item_group

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
        android:id="@+id/r"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <CheckBox
            android:id="@+id/che_group"
            android:layout_marginLeft="15dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/text_group"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@+id/che_group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25dp"/>
        <TextView
            android:layout_alignParentRight="true"
            android:textColor="#ff0000"
            android:layout_marginRight="15dp"
            android:textSize="20dp"
            android:text="优惠券"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RelativeLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_child"
        android:layout_below="@+id/r"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.v7.widget.RecyclerView>

</RelativeLayout>

item_view

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

</LinearLayout>

shape_kuang

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#fff"/>
    <stroke android:color="#000" android:width="0.1dp"/>
</shape>

MainActivity

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.CheckBox;
import android.widget.TextView;

import com.bwie.test.adapter.MyGroupAdapter;
import com.bwie.test.bean.MyHeJiBean;
import com.bwie.test.bean.Mybean;
import com.bwie.test.presenter.Presenter;
import com.bwie.test.util.ApiUrl;
import com.bwie.test.view.MyView;
import com.google.gson.Gson;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import okhttp3.ResponseBody;

public class ZhouActivity extends AppCompatActivity implements MyView{
    @BindView(R.id.recycler_view)
    RecyclerView recyclerView;
    @BindView(R.id.che_all)
    CheckBox cheAll;
    @BindView(R.id.sumAll)
    TextView sumAll;
    @BindView(R.id.numAll)
    TextView numAll;
    private int num;
    private String price;
    private Presenter presenter;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
                MyHeJiBean myHeJiBean = (MyHeJiBean) msg.obj;
                sumAll.setText("合计:¥" + myHeJiBean.getPrice());
                numAll.setText("去结算(" + myHeJiBean.getNum() + ")");
                num = myHeJiBean.getNum();
                price = myHeJiBean.getPrice();
            }
        }
    };
    private MyGroupAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zhou);
        ButterKnife.bind(this);
        //隐藏原有标题

        presenter = new Presenter(this);
        presenter.attachView(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        presenter.getUrl(ApiUrl.chaxun);
    }

    @Override
    public void getResponse(ResponseBody responseBody) {
        try {
            Mybean mybean = new Gson().fromJson(responseBody.string(), Mybean.class);
            List<Mybean.DataBean> list = mybean.getData();
            for (int i = 0; i < list.size(); i++) {
                if (ischecked(i, list)) {
                    list.get(i).setAllCheckbox(true);
                }
            }

            cheAll.setChecked(isChild(list));

            recyclerView.setLayoutManager(new LinearLayoutManager(this
                    , LinearLayoutManager.VERTICAL, false));
            adapter = new MyGroupAdapter(this, presenter, handler, mybean);
            recyclerView.setAdapter(adapter);
            adapter.setNumSumAll();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void getError(Throwable throwable) {

    }

    private boolean isChild(List<Mybean.DataBean> list) {
        for (int i = 0; i < list.size(); i++) {
            if (!list.get(i).isAllCheckbox()) {
                return false;
            }
        }
        return true;
    }

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

    @OnClick(R.id.che_all)
    public void onClick() {
        if (adapter != null) {
            adapter.allChed(cheAll.isChecked());
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.jieBang();
        if (presenter != null) {
            presenter.dettach();
        }
    }
}

adapter文件夹下MyChildAdapter

public class MyChildAdapter extends RecyclerView.Adapter<MyChildHolder> {
    private final Context context;
    private final Mybean mybean;
    private final Handler handler;
    private final Presenter presenter;
    private final int groupposition;
    private int conAllCheck;

    public MyChildAdapter(Context context, Mybean mybean, Handler handler, Presenter presenter, int groupposition) {
        this.context = context;
        this.mybean = mybean;
        this.handler = handler;
        this.presenter = presenter;
        this.groupposition = groupposition;
    }

    @Override
    public MyChildHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_child, parent, false);
        MyChildHolder holder = new MyChildHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(final MyChildHolder holder, int position) {
        List<Mybean.DataBean.ListBean> list = mybean.getData().get(groupposition)
                .getList();
        final Mybean.DataBean.ListBean listBean = mybean.getData()
                .get(groupposition).getList().get(position);
        String[] split = listBean.getImages().split("\\|");
        Glide.with(context).load(split[0]).into(holder.image_child);
        holder.text_childtitle.setText(listBean.getTitle());
        holder.text_chidprice.setText("¥"+listBean.getBargainPrice());
        holder.text_childsum.setText(listBean.getNum()+"");
        //holder.text_chidprice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //中划线
        holder.text_chidprice.getPaint().setFlags(Paint
                .STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);  //设置中划线并加清晰

        holder.che_child.setChecked(Boolean.parseBoolean(String.valueOf(listBean
                .getSelected()==0?false:true)));
        holder.text_childsum.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(context);

                View view = View.inflate(context, R.layout.item_view, null);
                final EditText edit_text=view.findViewById(R.id.edit_text);

                edit_text.setText(listBean.getNum()+"");
                builder.setTitle("请输入")
                        .setView(view)
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                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("num", String.valueOf(edit_text.getText().toString()));
                                params.put("selected", String.valueOf(listBean.getSelected()));
                                RetrofitUtil.huoQu().doGet(ApiUrl.gengxin,params)
                                        .subscribeOn(Schedulers.io())
                                        .observeOn(AndroidSchedulers.mainThread())
                                        .subscribe(new Observer<ResponseBody>() {
                                            @Override
                                            public void onSubscribe(Disposable d) {

                                            }

                                            @Override
                                            public void onNext(ResponseBody value) {
                                                presenter.getUrl(ApiUrl.chaxun);
                                            }

                                            @Override
                                            public void onError(Throwable e) {

                                            }

                                            @Override
                                            public void onComplete() {

                                            }
                                        });
                            }
                        }).setNegativeButton("取消", null)
                        .show();
            }
        });

        holder.che_child.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("num", String.valueOf(listBean.getNum()));
                params.put("selected", String.valueOf(listBean.getSelected()==0?1:0));
                RetrofitUtil.huoQu().doGet(ApiUrl.gengxin,params)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Observer<ResponseBody>() {
                            @Override
                            public void onSubscribe(Disposable d) {

                            }

                            @Override
                            public void onNext(ResponseBody value) {

                                presenter.getUrl(ApiUrl.chaxun);
                            }

                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onComplete() {

                            }
                        });
            }
        });

        holder.text_jia.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("num", String.valueOf(listBean.getNum()+1));
                params.put("selected", String.valueOf(listBean.getSelected()));
                RetrofitUtil.huoQu().doGet(ApiUrl.gengxin,params)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Observer<ResponseBody>() {
                            @Override
                            public void onSubscribe(Disposable d) {

                            }

                            @Override
                            public void onNext(ResponseBody value) {

                                presenter.getUrl(ApiUrl.chaxun);
                            }

                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onComplete() {

                            }
                        });
            }
        });

        holder.text_jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int num = listBean.getNum();
                if (num==1){
                    Toast.makeText(context,"最小数量为1",Toast.LENGTH_LONG).show();
                    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("num", String.valueOf(listBean.getNum()-1));
                params.put("selected", String.valueOf(listBean.getSelected()));
                RetrofitUtil.huoQu().doGet(ApiUrl.gengxin,params)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Observer<ResponseBody>() {
                            @Override
                            public void onSubscribe(Disposable d) {

                            }

                            @Override
                            public void onNext(ResponseBody value) {
                                presenter.getUrl(ApiUrl.chaxun);
                            }

                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onComplete() {

                            }
                        });
            }
        });
    }

    @Override
    public int getItemCount() {
        return mybean.getData().get(groupposition).getList().size();
    }

    public void allChed(boolean checked) {
        ArrayList<Mybean.DataBean.ListBean> listBeans = new ArrayList<>();
        List<Mybean.DataBean> data = mybean.getData();
        for (int i=0;i<data.size();i++){
            List<Mybean.DataBean.ListBean> list = data.get(i).getList();
            for (int j=0;j<list.size();j++){
                listBeans.add(list.get(j));
            }
        }
        conAllCheck = 0;
        conAllChecked(listBeans,checked);
    }

    private void conAllChecked(final ArrayList<Mybean.DataBean.ListBean> listBeans, final boolean checked) {

        final Mybean.DataBean.ListBean listBean = listBeans.get(conAllCheck);

        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("num", String.valueOf(listBean.getNum()));
        params.put("selected", String.valueOf(checked ? 1 : 0));
        RetrofitUtil.huoQu().doGet(ApiUrl.gengxin,params)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ResponseBody>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(ResponseBody value) {
                        conAllCheck++;
                        if (conAllCheck<listBeans.size()){
                            conAllChecked(listBeans,checked);
                        }else {
                            presenter.getUrl(ApiUrl.chaxun);
                        }
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }
}

MyChildHolder

public class MyChildHolder extends RecyclerView.ViewHolder{
    public CheckBox che_child;
    public ImageView image_child;
    public TextView text_childtitle;
    public TextView text_chidprice;
    public TextView text_jian;
    public TextView text_childsum;
    public TextView text_jia;

    public MyChildHolder(View itemView) {
        super(itemView);
        //查找控件
        che_child = itemView.findViewById(R.id.che_child);
        image_child = itemView.findViewById(R.id.image_child);
        text_childtitle = itemView.findViewById(R.id.text_childtitle);
        text_chidprice = itemView.findViewById(R.id.text_chidprice);
        text_jian = itemView.findViewById(R.id.text_jian);
        text_childsum = itemView.findViewById(R.id.text_childsum);
        text_jia = itemView.findViewById(R.id.text_jia);
    }
}

MyGroupAdapter

public class MyGroupAdapter extends RecyclerView.Adapter<MyGroupHolder> {
    private final Context context;
    private final Presenter presenter;
    private final Handler handler;
    private final Mybean mybean;
    private int conindex;
    private MyChildAdapter adapter;

    public MyGroupAdapter(Context context, Presenter presenter, Handler handler, Mybean mybean) {
        this.context = context;
        this.presenter = presenter;
        this.handler = handler;
        this.mybean = mybean;
    }

    @Override
    public MyGroupHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_group, parent, false);
        MyGroupHolder holder = new MyGroupHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(final MyGroupHolder holder, final int position) {
        final List<Mybean.DataBean> data = mybean.getData();
        holder.text_group.setText(data.get(position).getSellerName());
        holder.che_group.setChecked(data.get(position).isAllCheckbox());
        holder.che_group.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                conindex = 0;
                allChildChecked(holder.che_group.isChecked(),data.get(position));
            }

        });

        holder.recycler_child.setLayoutManager(new LinearLayoutManager(context
                ,LinearLayoutManager.VERTICAL,false));
        adapter = new MyChildAdapter(context, mybean, handler, presenter, position);
        holder.recycler_child.setAdapter(adapter);
    }

    private void allChildChecked(final boolean checked, final Mybean.DataBean dataBean) {
        final Mybean.DataBean.ListBean bean = dataBean.getList().get(conindex);

        Map<String, String> params = new HashMap<>();
        params.put("uid", "4427");
        params.put("sellerid", String.valueOf(bean.getSellerid()));
        params.put("pid", String.valueOf(bean.getPid()));
        params.put("num", String.valueOf(bean.getNum()));
        params.put("selected", String.valueOf(checked ? 1 : 0));

        RetrofitUtil.huoQu().doGet(ApiUrl.gengxin,params)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ResponseBody>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(ResponseBody value) {
                        conindex++;
                        if (conindex<dataBean.getList().size()){
                            allChildChecked(checked,dataBean);
                        }else {
                            presenter.getUrl(ApiUrl.chaxun);
                        }
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

    @Override
    public int getItemCount() {
        return mybean.getData().size();
    }

    public void setNumSumAll() {
        double price=0;
        int num=0;
        List<Mybean.DataBean> data = mybean.getData();
        for (int i=0;i<data.size();i++){
            List<Mybean.DataBean.ListBean> beans = data.get(i).getList();
            for (int j=0;j<beans.size();j++){
                if (beans.get(j).getSelected()==1){
                    price+=beans.get(j).getBargainPrice()*beans.get(j).getNum();
                    num+=beans.get(j).getNum();
                }
            }
        }
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        String format = decimalFormat.format(price);
        MyHeJiBean myHeJiBean = new MyHeJiBean(format, num);
        Message msg = Message.obtain();
        msg.what=0;
        msg.obj=myHeJiBean;
        handler.sendMessage(msg);
    }

    public void allChed(boolean checked) {
        adapter.allChed(checked);
    }
}

MyGroupHolder

public class MyGroupHolder extends RecyclerView.ViewHolder{
    public CheckBox che_group;
    public RecyclerView recycler_child;
    public TextView text_group;

    public MyGroupHolder(View itemView) {
        super(itemView);
        //查找控件
        che_group = itemView.findViewById(R.id.che_group);
        text_group = itemView.findViewById(R.id.text_group);
        recycler_child = itemView.findViewById(R.id.recycler_child);
    }
}

model文件夹下Model

public class MyModel {
    private PresenterPort presenterPort;
    private Disposable d;

    public MyModel(PresenterPort presenterPort) {
        this.presenterPort = presenterPort;
    }

    public void getUrl(String chaxun) {
        HashMap<String, String> map = new HashMap<>();
        map.put("uid","4427");
        map.put("source","android");
        RetrofitUtil.huoQu().doGet(chaxun,map)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ResponseBody>() {

                    @Override
                    public void onSubscribe(Disposable d) {
                        MyModel.this.d = d;
                    }

                    @Override
                    public void onNext(ResponseBody value) {
                        presenterPort.getResponse(value);
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

    public void jieBang() {
        d.dispose();
    }
}

presenter文件夹下BasePresenter

public abstract class BasePresenter<T> {
    public Reference<T> mViewRef;
    public void attachView(T mView){
        mViewRef = new WeakReference<>(mView);
    }
    public T getView(){
        if (mViewRef!=null) {
            return mViewRef.get();
        }
        return null;
    }
    private boolean isUnsubscribed(){
        return mViewRef!=null;
    }
    public void dettach(){
        if (mViewRef!=null){
            mViewRef.clear();
            mViewRef=null;
        }
    }
}

Presenter

public class Presenter extends BasePresenter implements PresenterPort{
    private MyView myView;
    private final MyModel myModel;

    public Presenter(MyView myView) {
        myModel = new MyModel(this);
        this.myView = myView;
    }

    @Override
    public void getResponse(ResponseBody responseBody) {

    }

    @Override
    public void getError(Throwable throwable) {

    }

    public void getUrl(String chaxun) {
        myModel.getUrl(chaxun);
    }

    public void jieBang() {
        myModel.jieBang();
    }
}

PresenterPort

public interface PresenterPort {
    void getResponse(ResponseBody responseBody);
    void getError(Throwable throwable);
}

view文件夹下MyView

public interface MyView {
    void getResponse(ResponseBody responseBody);
    void getError(Throwable throwable);
}

api文件夹下ApiService

public interface ApiService {
    @GET("{url}")
    Observable<ResponseBody> doGet(@Path(value = "url"
            ,encoded = true) String url, @QueryMap Map<String,String> map);
    @FormUrlEncoded
    @POST("{url}")
    Observable<ResponseBody> doPost(@Path(value = "url"
            ,encoded = true) String url, @FieldMap Map<String, String> map);
}

ApiUrl

public class ApiUrl {
    public static String gong="http://120.27.23.105/";
    public static String chaxun="product/getCarts";
    //http://120.27.23.105/product/updateCarts?uid=71&sellerid=1&pid=1&selected=0&num=10
    public static String gengxin="product/updateCarts";
}

RetrofitUtil

public class RetrofitUtil {
    private static RetrofitUtil retrofitUtil=null;
    private Retrofit retrofit;

    private RetrofitUtil(){
    }

    private RetrofitUtil(String baseurl){
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .build();
        retrofit = new Retrofit.Builder()
                .baseUrl(baseurl)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

    public static RetrofitUtil getIntface(String baseurl){
        if (retrofitUtil==null){
            synchronized (RetrofitUtil.class){
                if (retrofitUtil==null){
                    retrofitUtil=new RetrofitUtil(baseurl);
                }
            }
        }
        return retrofitUtil;
    }

    public <T> T createService(Class<T> service){
        return retrofit.create(service);
    }

    public static ApiService huoQu(){
        return RetrofitUtil.getIntface(ApiUrl.gong).createService(ApiService.class);
    }
}

需要使用的控件

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

要导入的依赖

    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support.test.espresso:espresso-core:2.2.2'
    compile 'com.android.support.test:runner:0.5'
    compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'

    compile 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    //retrofit
    compile 'com.squareup.retrofit2:retrofit:2.0.1'
    compile 'com.squareup.retrofit2:converter-gson:2.0.1'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

    compile 'com.github.bumptech.glide:glide:3.7.0'

bean文件夹下Mybean

public class Mybean {

    private String msg;
    private String code;
    private List<DataBean> data;
    
    public static class DataBean {
        private String sellerName;
        private String sellerid;
        private List<ListBean> list;
        private boolean allCheckbox;

        public static class ListBean {
      
            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;

        }
    }
}

MyHeJiBean

public class MyHeJiBean {
    private String price;
    private int num;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值