Rerofit登录注册购物列表详情页购物车跳转订单

Cursor Cloud Agent:云原生编程工作流的底层重构 编程工作流正从本地计算范式转向云原生执行范式。Cloud Agent 本质是将代码理解、生成、执行与调试等核心能力下沉至隔离、可控、按需分配的云端虚拟机,通过 Firecracker 微虚拟机实现亚秒级启动,并依托上下文快照、环境镜像化和内核级沙箱保障一致性、算力弹性与数据安全。这一范式突破了传统本地 AI 编程助手在环境依赖、调试能力与企业合规上的根本局限,使 IDE 从编辑工具升维为分布式开发指挥中心。本文深入解析其运行机制与工程落地实践。 阅读详情


 compile 'io.reactivex.rxjava2:rxjava:2.0.7'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
    compile 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
    //加载图片Fresco
    compile 'com.facebook.fresco:fresco:0.12.0'
    // 支持 GIF 动图,需要添加
    compile 'com.facebook.fresco:animated-gif:0.12.0'
    // 支持 WebP (静态图+动图),需要添加
    compile 'com.facebook.fresco:animated-webp:0.12.0'
    compile 'com.facebook.fresco:webpsupport:0.12.0'
    // 仅支持 WebP 静态图,需要添加
    compile 'com.facebook.fresco:webpsupport:0.12.0'
//    使用EventBus
    compile 'org.greenrobot:eventbus:3.1.1'
    compile 'com.android.support:design:24.0.0'

初始化

IApplication

public class IApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}
MD5加密

LoginMD5
public class LoginMD5 {
    /**
     * 对外提供getMD5(String)方法
     * @author randyjia
     *
     */
        public static String getMD5(String val){
            MessageDigest md5 = null;
            try {
                md5 = MessageDigest.getInstance("MD5");
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            md5.update(val.getBytes());
            byte[] m = md5.digest();//加密
            return getString(m);
        }
        private static String getString(byte[] b){
            StringBuffer sb = new StringBuffer();
            for(int i = 0; i < b.length; i ++){
                sb.append(b[i]);
            }
            return sb.toString();
        }
}
CustomLinearLayout
public class CustomLinearLayout extends LinearLayout {
    private int i=1;
    private EditText et;

    public CustomLinearLayout(Context context) {
        super(context);
    }

    public CustomLinearLayout(final Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        View view = View.inflate(context, R.layout.custom_linearlayout,null);
        addView(view);
        Button jia = view.findViewById(R.id.jia);
        Button jian = view.findViewById(R.id.jian);
        et = view.findViewById(R.id.edit);
        et.setText("1");
        jia.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                i = Integer.parseInt(et.getText().toString().trim());
                i++;
                et.setText(i+"");
                if(countListener!=null){
                    countListener.setCount(i);
                }
            }


        });

        jian.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(i>1){
                    i = Integer.parseInt(et.getText().toString().trim());
                    i--;
                }else{
                    Toast.makeText(context,"数量不能小于1",Toast.LENGTH_SHORT).show();
                }
                et.setText(i+"");
                if(countListener!=null){
                    countListener.setCount(i);
                }
            }
        });
    }




    public CustomLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    CountListener countListener;
    public void getCount(CountListener countListener){
        this.countListener = countListener;
    }

    public interface CountListener{
        void setCount(int i);
    }





    public void setText(String count){
        et.setText(count);
    }
}

Main

<?xml version="1.0" encoding="utf-8"?>
<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="com.bawei.goodscar.MainActivity">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="淘宝登录"
            android:textColor="#000"
            android:textSize="20sp"
            android:layout_centerInParent="true"
            />
    </RelativeLayout>
    <LinearLayout
        android:layout_marginTop="60dp"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账号"
            />
        <EditText
            android:id="@+id/adminFive"
            android:layout_marginRight="20dp"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="请输入你的账号"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_gravity="center_horizontal"

        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码"
            />
        <EditText
            android:id="@+id/pwdFive"
            android:layout_marginRight="20dp"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="请输入你的密码"
            />
    </LinearLayout>
    <Button
        android:id="@+id/loginFive"
        android:textColor="#888888"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/shape_activity"
        android:layout_marginTop="30dp"
        android:layout_width="350dp"
        android:layout_height="50sp"
        android:textSize="20sp"
        android:text="登录"
        />
    <RelativeLayout
        android:layout_marginTop="10dp"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/regFive"
            android:padding="10dp"
            android:text="注册账号"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/forgetFive"
            android:padding="10dp"
            android:layout_alignParentRight="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="忘记密码"
            />

    </RelativeLayout>

</LinearLayout>
public class MainActivity extends AppCompatActivity implements LoginPresenterListener {
    private long exitTime = 0;
    @BindView(R.id.adminFive)
    EditText mAdminFive;
    @BindView(R.id.pwdFive)
    EditText mPwdFive;
    @BindView(R.id.loginFive)
    Button mLoginFive;
    @BindView(R.id.regFive)
    TextView mRegFive;
    @BindView(R.id.forgetFive)
    TextView mForgetFive;
    private LoginPresenter loginPresenter;

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

        //调用presenter层的数据
        loginPresenter = new LoginPresenter(this);

    }

    @OnClick({R.id.loginFive, R.id.regFive})
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.loginFive:
                //登录
                loginPresenter.getData(mAdminFive.getText().toString().trim(),mPwdFive.getText().toString().trim());
                break;
            case R.id.regFive:
                //跳转注册页面
                startActivity(new Intent(MainActivity.this,RegisterActivity.class));
                break;
        }
    }

    //接口返回的数据
    @Override
    public void success(String s) {
        if(("登录成功").equals(s)) {
            LoginMD5.getMD5(mPwdFive.getText().toString().trim());
            Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
            finish();
        }else{
            Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();

        }
    }

    @Override
    public void failed(String s) {
        Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();

    }

    @Override
    public void adminEmpty(String s) {
        Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();

    }

    @Override
    public void pwdEmpty(String s) {
        Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();

    }
    //销毁防止内存泄露
    @Override
    protected void onDestroy() {
        super.onDestroy();
        loginPresenter.detach();
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exit();
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

    public void exit() {
        if ((System.currentTimeMillis() - exitTime) > 2000) {
            Toast.makeText(getApplicationContext(), "再按一次退出程序",
                    Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            finish();
            System.exit(0);
        }
    }
}

Login

model

LoginModule
public class LoginModule {


    public void getData(String admin, String password, final LoginModuleListener loginListener){
        Map<String,String> map = new HashMap<>();
        map.put("mobile",admin);
        map.put("password",password);
        RetrofitManager.get("user/login", map, new BaseObserver<LoginBean>() {
            @Override
            public void success(LoginBean loginBean) {
                    if(loginListener!=null){
                        loginListener.success(loginBean);
                    }
            }

            @Override
            public void failure(int code) {

            }
        });

    }
}
LoginModuleListener
public interface LoginModuleListener {

    void success(LoginBean loginBean);

}
view
LoginPresenterListener
public interface LoginPresenterListener {
    void success(String s);
    void failed(String s);
    void adminEmpty(String s);
    void pwdEmpty(String s);
}
persenter
LoginPresenter
public class LoginPresenter {
    LoginPresenterListener loginPresenterListener;
    private final LoginModule loginModule;

    public LoginPresenter(LoginPresenterListener loginPresenterListener) {
        this.loginPresenterListener = loginPresenterListener;
        loginModule = new LoginModule();

    }

    public void getData(String admin,String pwd){
       //判断用户名不用为空
        if(TextUtils.isEmpty(admin)){
             if(loginPresenterListener!=null){
                 loginPresenterListener.adminEmpty("用户名不能为空");
                 return;
             }
        }
        //判断密码不用为空
        if(TextUtils.isEmpty(pwd)){
            if(loginPresenterListener!=null){
                loginPresenterListener.adminEmpty("密码不能为空");
              return;
            }
        }
        //调用m层的数据
        loginModule.getData(admin, pwd, new LoginModuleListener() {
            @Override
            public void success(LoginBean loginBean) {
                if(loginPresenterListener!=null){

                    loginPresenterListener.success(loginBean.getMsg());

                }
            }
        });
    }
    //防止内存泄露
    public void detach(){
        loginPresenterListener=null;
    }

}

Register
RegisterModule
public class RegisterModule {


    public void getData(String admin, String password, final RegModuleListener regModuleListener){
        Map<String,String> map = new HashMap<>();
        map.put("mobile",admin);
        map.put("password",password);
        RetrofitManager.get("user/reg", map, new BaseObserver<RegisterBean>() {
            @Override
            public void success(RegisterBean registerBean) {
                    if(regModuleListener!=null){
                        regModuleListener.success(registerBean);
                    }
            }

            @Override
            public void failure(int code) {

            }
        });

    }
}
RegModuleListener

public interface RegModuleListener {
    void success(RegisterBean registerBean);
}


RegisterPresenterListener
public interface RegisterPresenterListener {
    void success(String s);
    void failed(String s);
    void adminEmpty(String s);
    void pwdEmpty(String s);
    void email(String s);
    void confrim(String s);
}

RegisterPresenter
public class RegisterPresenter {
    RegisterPresenterListener registerPresenterListener;
    private final RegisterModule registerModule;


    public RegisterPresenter(RegisterPresenterListener registerPresenterListener) {
        this.registerPresenterListener = registerPresenterListener;
        registerModule = new RegisterModule();
    }

    public void getData(String admin,String pwd,String mpwd,String email){
       //判断用户名不用为空
        if(TextUtils.isEmpty(admin)){
             if(registerPresenterListener!=null){
                 registerPresenterListener.adminEmpty("用户名不能为空");
                 return;
             }
        }
        //判断密码不用为空
        if(TextUtils.isEmpty(pwd)){
            if(registerPresenterListener!=null){
                registerPresenterListener.pwdEmpty("密码不能为空");
               return;
            }
            //判断二次输入密码
            if(TextUtils.isEmpty(mpwd)) {
                if (registerPresenterListener != null) {
                    registerPresenterListener.confrim("密码不能为空");
                    return;
                }
                if(!mpwd.equals(pwd)){
                    if (registerPresenterListener != null) {
                        registerPresenterListener.confrim("两次密码不一样");
                        return;
                    }
                }
            }
            boolean email1 = isEmail(email);
            if(!email1){
                if (registerPresenterListener != null) {
                    registerPresenterListener.email("邮箱格式不正确");
                    return;
                }
            }
        }
        //调用m层的数据
        registerModule.getData(admin, pwd, new RegModuleListener() {
            @Override
            public void success(RegisterBean registerBean) {
                if(registerPresenterListener!=null){

                    registerPresenterListener.success(registerBean.getMsg());

                }
            }
        });
    }
    //防止内存泄露
    public void detach(){
        registerPresenterListener=null;
    }
    public boolean isEmail(String email) {
        String str = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
        Pattern p = Pattern.compile(str);
        Matcher m = p.matcher(email);

        return m.matches();
    }
}

Listgoods 订单列表

ProducetsModule
public class ProducetsModule {

    //列表页的接口
    public void getData(final ProductModuleListener productModuleListener){
        Map<String,String> map = new HashMap<>();
        map.put("pscid","1");
        map.put("page","1");
        map.put("source","android");
        RetrofitManager.get("product/getProducts", map, new BaseObserver<DataDataBean>() {
            @Override
            public void success(DataDataBean dataDataBean) {
                   if(productModuleListener!=null){
                       //将数据返回
                       productModuleListener.success(dataDataBean);
                   }
            }
            @Override
            public void failure(int code) {

            }

        });
    }
}

ProductModuleListener
public interface ProductModuleListener {

      void success(DataDataBean dataDataBean);
}

ProductPresenterListener
public interface ProductPresenterListener {

      void success(List<DataDataBean.DataBean> dataDataBean);
}
ProductPresenter
public class ProductPresenter {
    ProductPresenterListener productPresenterListener;
    private final ProducetsModule producetsModule;

    public ProductPresenter(ProductPresenterListener productPresenterListener) {
        this.productPresenterListener = productPresenterListener;
        producetsModule = new ProducetsModule();
    }
   //获取数据回传到vire层
    public void getData(){
           producetsModule.getData(new ProductModuleListener() {
               @Override
               public void success(DataDataBean dataDataBean) {
                   if(productPresenterListener!=null){
                       productPresenterListener.success(dataDataBean.getData());
                   }
               }
           });
    }
     public void detach(){
        productPresenterListener=null;
     }
}

details 详情页
model

AddCartModule
public class AddCartModule {

    public void getData(String pid, final CartModuleListener cartModuleListener){
     //   http://120.27.23.105/product/addCart
        Map<String, String> map = new HashMap<>();
        map.put("pid",pid);
        map.put("uid","100");
        map.put("source","android");
        //加入购物车
        RetrofitManager.get("product/addCart", map, new BaseObserver<AddCartBean>() {

            @Override
            public void success(AddCartBean addCartBean) {
                if(cartModuleListener!=null){
                    cartModuleListener.success(addCartBean);
                }
            }
            @Override
            public void failure(int code) {

            }
        });
    }
    public interface CartModuleListener{
        void success(AddCartBean addCartBean);
    }

}
DetailsModule
public class DetailsModule {
    public void getData(String pid, final DetailsModuleListener moduleListener){
        //http://120.27.23.105/product/getProductDetail?pid=1&source=android
        Map<String,String> map = new HashMap<>();
        map.put("pid",pid);
        map.put("source","android");
        RetrofitManager.get("product/getProductDetail", map, new BaseObserver<DetailsBean>() {
            @Override
            public void success(DetailsBean detailsBean) {
                      if(moduleListener!=null){
                          moduleListener.success(detailsBean);
                      }
            }

            @Override
            public void failure(int code) {

            }


        });
    }
}
view
DetailsModuleListener
public interface DetailsModuleListener {
    void success(DetailsBean deatails);
}
DetailsPresenterListener
public interface DetailsPresenterListener {
    void success(DetailsBean.DataBean list);
}
P
AddCartPresenter
public class AddCartPresenter {
    AddCartPresenterListener addCartPresenterListener;
    private final AddCartModule addCartModule;

    public AddCartPresenter(AddCartPresenterListener addCartPresenterListener) {
        this.addCartPresenterListener = addCartPresenterListener;
        addCartModule = new AddCartModule();
    }

    public void getData(String pid){
        addCartModule.getData(pid, new AddCartModule.CartModuleListener() {
            @Override
            public void success(AddCartBean addCartBean) {
                if(addCartPresenterListener!=null){

                        addCartPresenterListener.success(addCartBean.getMsg());

                }
            }
        });

    }

    public void detach(){
        addCartPresenterListener=null;
    }

    public interface AddCartPresenterListener{
        void success(String s);
    }
}
DetailsPresenter
public class DetailsPresenter {
    private DetailsPresenterListener presenterListener;
    private final DetailsModule detailsModule;

    public DetailsPresenter(DetailsPresenterListener presenterListener) {
        this.presenterListener = presenterListener;
        detailsModule = new DetailsModule();

    }

    public void getData(String pid){
         detailsModule.getData(pid, new DetailsModuleListener() {
             @Override
             public void success(DetailsBean deatails) {
                 if(presenterListener!=null){
                     presenterListener.success(deatails.getData());
                 }
             }
         });
    }
    public void detach(){
        presenterListener=null;
    }
}
ShopCar  购物车
M
CartDeleModule
public class CartDeleModule {

    public void getData(String pid, final DeleteModuleListener deleteModuleListener){
        Map<String, String> map = new HashMap<>();
        map.put("uid","100");
        map.put("pid",pid);
        //删除数据的接口调用
        RetrofitManager.get("/product/deleteCart", map, new BaseObserver<CartDeleteBean>() {
            @Override
            public void success(CartDeleteBean cartDeleteBean) {
                 if(deleteModuleListener !=null){
                     deleteModuleListener.success(cartDeleteBean);
                 }
            }

            @Override
            public void failure(int code) {

            }


        });
    }
}
CartModule
public class CartModule {

    public void getData(final CartModuleListener cartModuleListener){
//http://120.27.23.105/product/getCarts

        Map<String, String> map = new HashMap<>();
        map.put("uid","100");
        map.put("source","android");
        RetrofitManager.get("product/getCarts", map, new BaseObserver<CartBean>() {
            @Override
            public void success(CartBean cartBean) {
                    if(cartModuleListener!=null){
                        cartModuleListener.success(cartBean);
                    }
            }

            @Override
            public void failure(int code) {

            }

        });
    }
}
CartModuleListener
public interface CartModuleListener {
    void success(CartBean cartBean);

}
CartPresenterListener
public interface CartPresenterListener {
     void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child);
}
DeleteModuleListener
public interface DeleteModuleListener {
    void success(CartDeleteBean cartDeleteBean);
}

DeletePresenterListener
public interface DeletePresenterListener {
    void success(String s);
}
CartDelePresenter
public class CartDelePresenter {

    //拿到m层实例
    private static CartDeleModule cartDeleModule = new CartDeleModule();
    //删除数据
    public static void getData(String pid, final DeletePresenterListener deletePresenterListener){
        cartDeleModule.getData(pid, new DeleteModuleListener() {
            @Override
            public void success(CartDeleteBean cartDeleteBean) {
                //回传数据
                if(deletePresenterListener!=null){
                    deletePresenterListener.success(cartDeleteBean.getCode()+"");
                }
            }
        });
    }
}
CartPresenter
public class CartPresenter {

    CartPresenterListener cartPresenterListener;
    private final CartModule cartModule;

    public CartPresenter(CartPresenterListener cartPresenterListener) {
        this.cartPresenterListener = cartPresenterListener;
        cartModule = new CartModule();
    }
 //获取数据
    public void getData(){
        cartModule.getData(new CartModuleListener() {
            @Override
            public void success(CartBean cartBean) {
            //拿到一级二级数据返回去
                List<CartBean.DataBean> group = cartBean.getData();
                List<List<CartBean.DataBean.ListBean>> child = new ArrayList<>();
                for (int i=0;i<group.size();i++){
                    child.add(group.get(i).getList());
                }
                if(cartPresenterListener!=null){
                    cartPresenterListener.success(group,child);
                }
            }
        });
    }
    public void detach(){
        cartPresenterListener=null;
    }
}

Dingdan

model
DingModule
public class DingModule {

    //订单的数据
    public void getData(String page,String status, final DingModuleListener dingModuleListener){
        Map<String, String> map = new HashMap<>();
        map.put("uid","71");
        map.put("page",page);
        map.put("status",status);
        //http://120.27.23.105/product/getOrders?uid=71&status=1
        map.put("source","android");
        RetrofitManager.get("product/getOrders", map, new BaseObserver<DingDBean>() {
            @Override
            public void success(DingDBean dingDBean) {
                     if(dingModuleListener!=null){
                         dingModuleListener.success(dingDBean);
                     }
            }

            @Override
            public void failure(int code) {

            }

        });
    }
}
DingModuleListener
public interface DingModuleListener {

    void success(DingDBean dingDBean);
}
DingPresenterListener
public interface DingPresenterListener {

    void success(DingDBean dingDBean);
}
DingPresenter
public class DingPresenter {

    private DingModule dingModule = new DingModule();
    //订单数据返回到fragment中去
    public void getData(String page,String status, final DingPresenterListener dingPresenterListener){
           dingModule.getData(page,status, new DingModuleListener() {
               @Override
               public void success(DingDBean dingDBean) {
                   if(dingPresenterListener!=null){
                       dingPresenterListener.success(dingDBean);
                   }
               }
           });
    }
}

Bean
LoginBean
public class LoginBean {

    /**
     * msg : 登录成功
     * code : 0
     * data : {"age":null,"appkey":"a3fc5a3a5d4d9391","appsecret":"EE3C8823438F0BE1B992543949D03BC7","createtime":"2018-01-15T19:30:23","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"13051158859","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"A187F505468DE2E764D5395E0E9A1BF2","uid":1681,"userId":null,"username":"13051158859"}
     */

    private String msg;
    private String code;
    private 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 DataBean getData() {
        return data;
    }

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

    public static class DataBean {
        /**
         * age : null
         * appkey : a3fc5a3a5d4d9391
         * appsecret : EE3C8823438F0BE1B992543949D03BC7
         * createtime : 2018-01-15T19:30:23
         * email : null
         * fans : null
         * follow : null
         * gender : null
         * icon : null
         * latitude : null
         * longitude : null
         * mobile : 13051158859
         * money : null
         * nickname : null
         * password : 8F669074CAF5513351A2DE5CC22AC04C
         * praiseNum : null
         * token : A187F505468DE2E764D5395E0E9A1BF2
         * uid : 1681
         * userId : null
         * username : 13051158859
         */

        private Object age;
        private String appkey;
        private String appsecret;
        private String createtime;
        private Object email;
        private Object fans;
        private Object follow;
        private Object gender;
        private Object icon;
        private Object latitude;
        private Object longitude;
        private String mobile;
        private Object money;
        private Object nickname;
        private String password;
        private Object praiseNum;
        private String token;
        private int uid;
        private Object userId;
        private String username;

        public Object getAge() {
            return age;
        }

        public void setAge(Object age) {
            this.age = age;
        }

        public String getAppkey() {
            return appkey;
        }

        public void setAppkey(String appkey) {
            this.appkey = appkey;
        }

        public String getAppsecret() {
            return appsecret;
        }

        public void setAppsecret(String appsecret) {
            this.appsecret = appsecret;
        }

        public String getCreatetime() {
            return createtime;
        }

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

        public Object getEmail() {
            return email;
        }

        public void setEmail(Object email) {
            this.email = email;
        }

        public Object getFans() {
            return fans;
        }

        public void setFans(Object fans) {
            this.fans = fans;
        }

        public Object getFollow() {
            return follow;
        }

        public void setFollow(Object follow) {
            this.follow = follow;
        }

        public Object getGender() {
            return gender;
        }

        public void setGender(Object gender) {
            this.gender = gender;
        }

        public Object getIcon() {
            return icon;
        }

        public void setIcon(Object icon) {
            this.icon = icon;
        }

        public Object getLatitude() {
            return latitude;
        }

        public void setLatitude(Object latitude) {
            this.latitude = latitude;
        }

        public Object getLongitude() {
            return longitude;
        }

        public void setLongitude(Object longitude) {
            this.longitude = longitude;
        }

        public String getMobile() {
            return mobile;
        }

        public void setMobile(String mobile) {
            this.mobile = mobile;
        }

        public Object getMoney() {
            return money;
        }

        public void setMoney(Object money) {
            this.money = money;
        }

        public Object getNickname() {
            return nickname;
        }

        public void setNickname(Object nickname) {
            this.nickname = nickname;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public Object getPraiseNum() {
            return praiseNum;
        }

        public void setPraiseNum(Object praiseNum) {
            this.praiseNum = praiseNum;
        }

        public String getToken() {
            return token;
        }

        public void setToken(String token) {
            this.token = token;
        }

        public int getUid() {
            return uid;
        }

        public void setUid(int uid) {
            this.uid = uid;
        }

        public Object getUserId() {
            return userId;
        }

        public void setUserId(Object userId) {
            this.userId = userId;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }
    }
}

RegisterBean
public class RegisterBean {
    /**
     * msg : 天呢!用户已注册
     * code : 1
     * data : {}
     */

    private String msg;
    private String code;
    private String 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 String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}
DetailsBean
public class DetailsBean {

    /**
     * msg :
     * seller : {"description":"我是商家17","icon":"http://120.27.23.105/images/icon.png","name":"商家17","productNums":999,"score":5,"sellerid":17}
     * code : 0
     * data : {"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","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","itemtype":1,"pid":1,"price":118,"pscid":1,"salenum":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}
     */

    private String msg;
    private SellerBean seller;
    private String code;
    private DataBean data;

    public String getMsg() {
        return msg;
    }

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

    public SellerBean getSeller() {
        return seller;
    }

    public void setSeller(SellerBean seller) {
        this.seller = seller;
    }

    public String getCode() {
        return code;
    }

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

    public DataBean getData() {
        return data;
    }

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

    public static class SellerBean {
        /**
         * description : 我是商家17
         * icon : http://120.27.23.105/images/icon.png
         * name : 商家17
         * productNums : 999
         * score : 5.0
         * sellerid : 17
         */

        private String description;
        private String icon;
        private String name;
        private int productNums;
        private double score;
        private int sellerid;

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getProductNums() {
            return productNums;
        }

        public void setProductNums(int productNums) {
            this.productNums = productNums;
        }

        public double getScore() {
            return score;
        }

        public void setScore(double score) {
            this.score = score;
        }

        public int getSellerid() {
            return sellerid;
        }

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

    public static class DataBean {
        /**
         * bargainPrice : 111.99
         * createtime : 2017-10-14T21:39:05
         * 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
         * itemtype : 1
         * pid : 1
         * price : 118.0
         * pscid : 1
         * salenum : 0
         * sellerid : 17
         * subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
         * title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
         */

        private double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int itemtype;
        private int pid;
        private double price;
        private int pscid;
        private int salenum;
        private int sellerid;
        private String subhead;
        private String title;

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(double 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 getItemtype() {
            return itemtype;
        }

        public void setItemtype(int itemtype) {
            this.itemtype = itemtype;
        }

        public int getPid() {
            return pid;
        }

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

        public double getPrice() {
            return price;
        }

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

        public int getPscid() {
            return pscid;
        }

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

        public int getSalenum() {
            return salenum;
        }

        public void setSalenum(int salenum) {
            this.salenum = salenum;
        }

        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;
        }
    }
}

DingDBean
public class DingDBean {

    /**
     * msg : 请求成功
     * code : 0
     * data : [{"createtime":"2017-11-09T09:17:20","orderid":1446,"price":99.99,"status":1,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:20:58","orderid":1448,"price":256.99,"status":1,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:22:41","orderid":1458,"price":999,"status":1,"title":"订单测试标题","uid":71},{"createtime":"2017-11-09T09:22:41","orderid":1464,"price":156,"status":1,"title":"订单测试标题","uid":71},{"createtime":"2017-12-18T14:55:20","orderid":3459,"price":99.99,"status":1,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-19T20:13:37","orderid":3564,"price":99.99,"status":1,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T11:01:10","orderid":3639,"price":1001,"status":1,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T11:02:57","orderid":3640,"price":99.99,"status":1,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T11:15:37","orderid":3645,"price":99.99,"status":1,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T11:58:36","orderid":3723,"price":99.99,"status":1,"title":"订单测试标题71","uid":71}]
     * page : 1
     */

    private String msg;
    private String code;
    private String page;
    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 String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

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

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

    public static class DataBean {
        /**
         * createtime : 2017-11-09T09:17:20
         * orderid : 1446
         * price : 99.99
         * status : 1
         * title : 订单标题测试
         * uid : 71
         */

        private String createtime;
        private int orderid;
        private double price;
        private int status;
        private String title;
        private int uid;

        public String getCreatetime() {
            return createtime;
        }

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

        public int getOrderid() {
            return orderid;
        }

        public void setOrderid(int orderid) {
            this.orderid = orderid;
        }

        public double getPrice() {
            return price;
        }

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

        public int getStatus() {
            return status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

        public String getTitle() {
            return title;
        }

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

        public int getUid() {
            return uid;
        }

        public void setUid(int uid) {
            this.uid = uid;
        }
    }
}
DataDataBean

public class DataDataBean {

    /**
     * msg : 请求成功
     * code : 0
     * data : [{"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","itemtype":1,"pid":45,"price":2999,"pscid":39,"salenum":4666,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"},{"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","itemtype":0,"pid":46,"price":234,"pscid":39,"salenum":868,"sellerid":2,"subhead":"【iPhone新品上市】新一代iPhone,让智能看起来更不一样","title":"Apple iPhone 8 Plus (A1864) 64GB 金色 移动联通电信4G手机"},{"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","itemtype":2,"pid":47,"price":111,"pscid":39,"salenum":757,"sellerid":3,"subhead":"碳黑色 32GB 全网通 官方标配   1件","title":"锤子 坚果Pro 特别版 巧克力色 酒红色 全网通 移动联通电信4G手机 双卡双待 碳黑色 32GB 全网通"},{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":1,"pid":48,"price":222,"pscid":39,"salenum":656,"sellerid":4,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":1999,"createtime":"2017-10-10T16:09:02","detailUrl":"https://item.m.jd.com/product/5025971.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t7210/232/3738666823/232298/9004583e/59c3a9a7N8de42e15.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8356/82/2107423621/109733/c019b8c6/59c3a9a6Ne9a4bdd7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t10219/74/25356012/171379/7d55e296/59c3a9a8N82fa6e02.jpg!q70.jpg","itemtype":0,"pid":49,"price":333,"pscid":39,"salenum":123,"sellerid":5,"subhead":"vivo X20 带你开启全面屏时代!逆光也清晰,照亮你的美!","title":"vivo X20 全面屏手机 全网通 4GB+64GB 金色 移动联通电信4G手机 双卡双待"},{"bargainPrice":3455,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":2,"pid":50,"price":444,"pscid":39,"salenum":54,"sellerid":6,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":1,"pid":51,"price":555,"pscid":39,"salenum":424,"sellerid":7,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":3455,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":0,"pid":52,"price":666,"pscid":39,"salenum":212,"sellerid":8,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":2999,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/2385655.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t2068/298/2448145915/157953/7be197df/56d51a42Nd86f1c8e.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t2437/128/1687178395/117431/bcc190c1/56d3fcbaNb2963d21.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t2467/222/2263160610/95597/927b8a2f/56d3eafeNdecebeb6.jpg!q70.jpg","itemtype":2,"pid":53,"price":777,"pscid":39,"salenum":0,"sellerid":9,"subhead":"Super AMOLED三星双曲面2K 屏,支持无线充电!","title":"三星 Galaxy S7 edge(G9350)4GB+32GB 铂光金 移动联通电信4G手机 双卡双待"},{"bargainPrice":3455,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":0,"pid":54,"price":888,"pscid":39,"salenum":7575,"sellerid":10,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"}]
     * page : 1
     */

    private String msg;
    private String code;
    private String page;
    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 String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

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

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

    public static class DataBean {
        /**
         * bargainPrice : 99.0
         * 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
         * itemtype : 1
         * pid : 45
         * price : 2999.0
         * pscid : 39
         * salenum : 4666
         * 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 itemtype;
        private int pid;
        private double price;
        private int pscid;
        private int salenum;
        private int sellerid;
        private String subhead;
        private String title;

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(double 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 getItemtype() {
            return itemtype;
        }

        public void setItemtype(int itemtype) {
            this.itemtype = itemtype;
        }

        public int getPid() {
            return pid;
        }

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

        public double getPrice() {
            return price;
        }

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

        public int getPscid() {
            return pscid;
        }

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

        public int getSalenum() {
            return salenum;
        }

        public void setSalenum(int salenum) {
            this.salenum = salenum;
        }

        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;
        }
    }
}


CartDeleteBean

public class CartDeleteBean {

    /**
     * msg : 删除购物车成功
     * code : 0
     */

    private String msg;
    private String code;

    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;
    }
}
CartBean
public class CartBean {

    /**
     * msg : 请求成功
     * code : 0
     * data : [{"list":[{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","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":2,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家17","sellerid":"17"}]
     */

    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":111.99,"createtime":"2017-10-14T21:39:05","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":2,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}]
         * sellerName : 商家17
         * sellerid : 17
         */

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

        public boolean isgChecked() {
            return gChecked;
        }

        public void setgChecked(boolean gChecked) {
            this.gChecked = gChecked;
        }

        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 : 111.99
             * createtime : 2017-10-14T21:39:05
             * 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 : 2
             * pid : 1
             * price : 118.0
             * pscid : 1
             * selected : 0
             * sellerid : 17
             * subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
             * title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
             */

            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 boolean cChecked;

            public boolean iscChecked() {
                return cChecked;
            }

            public void setcChecked(boolean cChecked) {
                this.cChecked = cChecked;
            }

            public double getBargainPrice() {
                return bargainPrice;
            }

            public void setBargainPrice(double 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(double 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;
            }
        }
    }
}

AddCartBean
public class AddCartBean {
    /**
     * msg : 加购成功
     * code : 0
     */

    private String msg;
    private String code;

    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;
    }
}

Adapter
MyProductAdapter
public class MyProductAdapter extends RecyclerView.Adapter{
    Context context;
    List<DataDataBean.DataBean> dataDataBean;
    private static final int MAX_HEAP_SIZE = (int) Runtime.getRuntime().maxMemory();
    public static final int MAX_DISK_CACHE_SIZE = 40 * ByteConstants.MB;
    public static final int MAX_MEMORY_CACHE_SIZE = MAX_HEAP_SIZE / 4;
    private static final String IMAGE_PIPELINE_CACHE_DIR = "imagepipeline_cache";
    private static ImagePipelineConfig sImagePipelineConfig;
    private static ImagePipelineConfig sOkHttpImagePipelineConfig;

    public MyProductAdapter(Context context, List<DataDataBean.DataBean> dataDataBean) {
        this.context = context;
        this.dataDataBean = dataDataBean;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.product_recycler_item,null);
        return new ViewHolder1(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        ViewHolder1 holder1 = (ViewHolder1) holder;
        //设置数据
        String[] split = dataDataBean.get(position).getImages().split("\\|");
        holder1.imageView.setImageURI(Uri.parse(split[0]));
        holder1.price.setText(dataDataBean.get(position).getPrice()+"");
        holder1.title.setText(dataDataBean.get(position).getTitle());

        //点击事件
        holder1.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context,DetailsActivity.class);
                intent.putExtra("pid",dataDataBean.get(position).getPscid()+"");
                context.startActivity(intent);

            }
        });
    }

    @Override
    public int getItemCount() {
        return dataDataBean.size();
    }
    class ViewHolder1 extends RecyclerView.ViewHolder {
          SimpleDraweeView imageView;
          TextView title;
          TextView price;
          LinearLayout linearLayout;
        public ViewHolder1(View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.simpleDrawee);
            title = itemView.findViewById(R.id.titleTextview);
            price = itemView.findViewById(R.id.price);
            linearLayout = itemView.findViewById(R.id.linear);
        }
    }
    /**
     * 配置内存缓存和磁盘缓存
     */
    private static void configureCaches(
            ImagePipelineConfig.Builder configBuilder,
            Context context) {
        final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
                // Max total size of elements in the cache
                MAX_MEMORY_CACHE_SIZE,
                // Max entries in the cache
                Integer.MAX_VALUE,
                // Max total size of elements in eviction queue
                MAX_MEMORY_CACHE_SIZE,
                // Max length of eviction queue
                Integer.MAX_VALUE,
                // Max cache entry size
                Integer.MAX_VALUE);
        configBuilder
                .setBitmapMemoryCacheParamsSupplier(
                        new Supplier<MemoryCacheParams>() {
                            @Override
                            public MemoryCacheParams get() {
                                return bitmapCacheParams;
                            }
                        })
                .setMainDiskCacheConfig(
                        DiskCacheConfig.newBuilder(context)
                                .setBaseDirectoryPath(context.getApplicationContext().getCacheDir())
                                .setBaseDirectoryName(IMAGE_PIPELINE_CACHE_DIR)
                                .setMaxCacheSize(MAX_DISK_CACHE_SIZE)
                                .build());
    }
    private static void configureLoggingListeners(ImagePipelineConfig.Builder configBuilder) {
        Set<RequestListener> requestListeners = new HashSet<>();
        requestListeners.add(new RequestLoggingListener());
        configBuilder.setRequestListeners(requestListeners);
    }

    private static void configureOptions(ImagePipelineConfig.Builder configBuilder) {
        configBuilder.setDownsampleEnabled(true);
    }

}

MyAdapter
public class MyAdapter extends BaseExpandableListAdapter {
    Context context;
    List<CartBean.DataBean> group;
    List<List<CartBean.DataBean.ListBean>> child;
    private Holder1 holder1;
    private Holder2 holder2;
    public MyAdapter(Context context, List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) {
        this.context = context;
        this.group = group;
        this.child = child;
    }

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

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

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

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

    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView = LayoutInflater.from(context).inflate(R.layout.item_expandable_listview, null);
            holder1 = new Holder1();
            holder1.checkBox = convertView.findViewById(R.id.groupChecked);
            holder1.textview = convertView.findViewById(R.id.groupTitle);
            convertView.setTag(holder1);
        }else{
            holder1 = (Holder1) convertView.getTag();
        }
        //设置显示数据
        holder1.textview.setText(group.get(groupPosition).getSellerName());
        holder1.checkBox.setChecked(group.get(groupPosition).isgChecked());

        //设置一级标题的点击事件
        holder1.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean b = !group.get(groupPosition).isgChecked();
                Toast.makeText(context,b+"",Toast.LENGTH_SHORT).show();
                group.get(groupPosition).setgChecked(b);
                //拿到你点击孩子的父亲
                List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
                //遍历看看他有几个孩子
                for (int i=0;i<listBeans.size();i++){
                    listBeans.get(i).setcChecked(group.get(groupPosition).isgChecked());
                }
                changeListener.setState(isGroup());

                notifyDataSetChanged();
                sum();
            }
        });


        return convertView;
    }

    @Override
    public View getChildView(final int groupPosition, final int childPosition, final boolean isLastChild, View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView = LayoutInflater.from(context).inflate(R.layout.item_listview, null);
            holder2 = new Holder2();
            holder2.imageView = convertView.findViewById(R.id.simpleDraw);
            holder2.checkBox = convertView.findViewById(R.id.childChecked);
            holder2.title = convertView.findViewById(R.id.childTitle);
            holder2.miaoshu= convertView.findViewById(R.id.miaoShu);
            holder2.price = convertView.findViewById(R.id.childPrice);
            holder2.yprice = convertView.findViewById(R.id.childPriceY);
            holder2.linearLayout = convertView.findViewById(R.id.linearLayoutItem);
            holder2.customLinearLayout = convertView.findViewById(R.id.customLinearLayout);
            convertView.setTag(holder2);
        }else{
            holder2 = (Holder2) convertView.getTag();
        }
        final CartBean.DataBean.ListBean listBean = child.get(groupPosition).get(childPosition);
        //设置显示数据
        holder2.checkBox.setChecked(listBean.iscChecked());
        holder2.title.setText(listBean.getTitle());
        holder2.price.setText("¥"+listBean.getPrice());
        holder2.yprice.setText("¥"+listBean.getBargainPrice());
        holder2.customLinearLayout.setText(listBean.getNum()+"");
        //中划线
        holder2.yprice.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);
        // 设置中划线并加清晰
        holder2.yprice.setPaintFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);
        holder2.miaoshu.setText(listBean.getSubhead());
        String[] split = listBean.getImages().split("\\|");
        holder2.imageView.setImageURI(Uri.parse(split[0]));
        holder2.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
                boolean b = !listBeans.get(childPosition).iscChecked();
                listBeans.get(childPosition).setcChecked(b);
                boolean isno = isChildChange(listBeans);
                //设置一级的状态
                group.get(groupPosition).setgChecked(isno);

                changeListener.setState(isChild());

                notifyDataSetChanged();
                sum();
            }
        });
        //加减号的点击事件
        holder2.customLinearLayout.getCount(new CustomLinearLayout.CountListener() {
            @Override
            public void setCount(int i) {
                listBean.setNum(i);
                sum();
            }
        });
        //删除事件
        holder2.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<CartBean.DataBean.ListBean> list = group.get(groupPosition).getList();

                if(list.size() > 0) {
                    int pid = child.get(groupPosition).get(childPosition).getPid();
                    Toast.makeText(context, pid + "", Toast.LENGTH_SHORT).show();
                    //调用删除接口
                    CartDelePresenter.getData(pid + "", new DeletePresenterListener() {
                        @Override
                        public void success(String s) {
                            if (s.equals("0")) {
                                Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(context, "删除失败", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                }
                for (int i=0;i<list.size();i++) {
                    if (list.size() > 0) {
                        list.remove(i);

                    }
                }
                if(list.size()==0){
                    child.remove(childPosition);
                    group.remove(groupPosition);
                }

                notifyDataSetChanged();
            }

        });

        return convertView;
    }


    //计算的方法
    public void sum(){
        double price = 0;
        int count = 0;

        for (int i=0;i<group.size();i++){
            List<CartBean.DataBean.ListBean> list = group.get(i).getList();
            for (int j=0;j<list.size();j++){
                if(list.get(j).iscChecked()){
                    price +=list.get(j).getPrice()*list.get(j).getNum();
                    count +=list.get(j).getNum();
                }
            }
        }
        notifyDataSetChanged();
        //接口回调
        if(changeListener!=null) {
            changeListener.setText(price + "", count + "");
        }
    }




    ChangeListener changeListener;
    public void setChangeListener(ChangeListener changeListener) {
        this.changeListener = changeListener;
    }

    //接口传值,去改变全选的状态,设置商品的数量价格
    public interface ChangeListener{
        void setState(boolean flag);
        void setText(String price, String count);
    }


    //子类点击改变全选状态
    public boolean isChild(){
        for (int i=0;i<group.size();i++){
            List<CartBean.DataBean.ListBean> list = group.get(i).getList();
            for (int j=0;j<list.size();j++){
                if(!child.get(i).get(j).iscChecked()){
                    return false;
                }
            }
        }
        return true;
    }

    //父类点击改变全选的状态

    public boolean isGroup(){
        for (int i=0;i<group.size();i++){
            if(!group.get(i).isgChecked()){
                return false;
            }
        }
        return true;
    }

    //设置全选
    public void checkedAll(boolean flag){
        if(flag){
            for (int i=0;i<group.size();i++){
                List<CartBean.DataBean.ListBean> list = group.get(i).getList();
                group.get(i).setgChecked(true);
                for (int j=0;j<list.size();j++){
                    child.get(i).get(j).setcChecked(true);
                }
            }
        }else{
            for (int i=0;i<group.size();i++){
                List<CartBean.DataBean.ListBean> list = group.get(i).getList();
                group.get(i).setgChecked(false);
                for (int j=0;j<list.size();j++){
                    child.get(i).get(j).setcChecked(false);
                }
            }
        }
        notifyDataSetChanged();
        sum();
    }


    //如果有意子类没选中就将父类的状态改为true
    public boolean isChildChange(   List<CartBean.DataBean.ListBean> listBeans){
        for (int i=0;i<listBeans.size();i++){
            if(!listBeans.get(i).iscChecked()){
                return false;
            }
        }
        return true;
    }

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

    class Holder1{
        CheckBox checkBox;
        TextView textview;
    }

    class Holder2{
        LinearLayout linearLayout;
        CustomLinearLayout customLinearLayout;
        CheckBox checkBox;
        SimpleDraweeView imageView;
        TextView title;
        TextView miaoshu;
        TextView price;
        TextView yprice;
    }
}

MyDingAdapter
public class MyDingAdapter extends RecyclerView.Adapter{
    Context context;
    List<DingDBean.DataBean> data;

    public MyDingAdapter(Context context, List<DingDBean.DataBean> data) {
        this.context = context;
        this.data = data;
    }



    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.fragment_item,null);
        return new ViewHolder1(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        final ViewHolder1 holder1 = (ViewHolder1) holder;
        //设置数据
        holder1.textView.setText(data.get(position).getTitle());
        holder1.price.setText(data.get(position).getPrice()+"");
        holder1.time.setText(data.get(position).getCreatetime()+"");
       //根据不同的状态动态的设置
        int status = data.get(position).getStatus();
        if(status==0){
            holder1.textView1.setText("待支付");
            holder1.btn.setText("待支付");
        }else if(status==1){
            holder1.textView1.setText("已支付");
            holder1.btn.setText("已支付");
        }else{
            holder1.textView1.setText("已取消");
            holder1.btn.setText("已取消");
        }
        //点击改变按钮事件
        holder1.btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String btn = holder1.btn.getText().toString();
                String text = holder1.textView1.getText().toString();
                if(btn.equals("待支付")){
                    holder1.btn.setText("已取消");
                    holder1.textView1.setText("已取消");

                }else if(btn.equals("已取消")){
                    Toast.makeText(context,"已取消",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(context,"已支付",Toast.LENGTH_SHORT).show();
                }
            }
        });

        //点击删除按钮事件
        holder1.relativeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               //弹出窗
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
                alertDialog.setTitle("警告");
                alertDialog.setMessage("确定删除"+data.get(position).getTitle()+"吗?");
                alertDialog.setNegativeButton("取消", new AlertDialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                alertDialog.setPositiveButton("确定", new AlertDialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        data.remove(position);
                        notifyDataSetChanged();
                    }
                });
                alertDialog.show();
            }
        });
    }

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


    class ViewHolder1 extends RecyclerView.ViewHolder {
        TextView textView;
        TextView textView1;
        RelativeLayout relativeLayout;
        Button btn;
        TextView price;
        TextView time;
        public ViewHolder1(View itemView) {
            super(itemView);
           textView=itemView.findViewById(R.id.titleView);
           textView1 = itemView.findViewById(R.id.textView);
           price = itemView.findViewById(R.id.price);
           time = itemView.findViewById(R.id.time);
           btn = itemView.findViewById(R.id.btn);
           relativeLayout = itemView.findViewById(R.id.relative);

        }
    }
}


Activity
SecondActivity
public class SecondActivity extends AppCompatActivity implements ProductPresenterListener {

    @BindView(R.id.recyclerView)
    RecyclerView mRecyclerView;
    private ProductPresenter productPresenter;

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

        //调用数据
        productPresenter = new ProductPresenter(this);
        productPresenter.getData();

    }


    @Override
    public void success(List<DataDataBean.DataBean> dataDataBean) {
        mRecyclerView.setLayoutManager(new LinearLayoutManager(SecondActivity.this));
        MyProductAdapter myProductAdapter = new MyProductAdapter(SecondActivity.this,dataDataBean);
        mRecyclerView.setAdapter(myProductAdapter);
    }

    //防止内存泄露
    @Override
    protected void onDestroy() {
        super.onDestroy();
        productPresenter.detach();
    }
}
RegisterActivity
public class RegisterActivity extends AppCompatActivity implements RegisterPresenterListener {

    @BindView(R.id.adminFive)
    EditText mAdminFive;
    @BindView(R.id.pwdFive)
    EditText mPwdFive;
    @BindView(R.id.loginFive)
    Button mLoginFive;
    @BindView(R.id.affirm)
    EditText mAffirm;
    @BindView(R.id.email)
    EditText mEmail;
    private RegisterPresenter registerPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        ButterKnife.bind(this);
        //告诉presenter层
        registerPresenter = new RegisterPresenter(this);

    }

    //点击注册
    @OnClick({R.id.loginFive, R.id.affirm, R.id.email})
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.loginFive:
                String admin = mAdminFive.getText().toString().trim();
                String pwd = mPwdFive.getText().toString().trim();
                String maff = mAffirm.getText().toString().trim();
                String email = mEmail.getText().toString().trim();
                //点击注册
                registerPresenter.getData(admin,pwd,maff,email);

                break;
        }
    }

    //返回的数据
    @Override
    public void success(String s) {
        if (("注册成功").equals(s)) {
            Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
            finish();
        } else {
            Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void failed(String s) {
        Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();

    }

    @Override
    public void adminEmpty(String s) {
        Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();

    }

    @Override
    public void pwdEmpty(String s) {
        Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();

    }

    @Override
    public void email(String s) {
        Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();

    }

    @Override
    public void confrim(String s) {
        Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();

    }



    @Override
    protected void onDestroy() {
        super.onDestroy();
        registerPresenter.detach();
    }
}


DetailsActivity
public class DetailsActivity extends AppCompatActivity implements DetailsPresenterListener, AddCartPresenter.AddCartPresenterListener {

    @BindView(R.id.videoView)
    VideoView mVideoView;
    @BindView(R.id.simpleDetails)
    SimpleDraweeView mSimpleDetails;
    @BindView(R.id.title)
    TextView mTitle;
    @BindView(R.id.price)
    TextView mPrice;
    @BindView(R.id.addCart)
    Button mAddCart;
    private DetailsPresenter detailsPresenter;
    private String pid;
    private AddCartPresenter addCartPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_details);
        ButterKnife.bind(this);
       //加入购物车
        addCartPresenter = new AddCartPresenter(this);

        //得到pid
        pid = getIntent().getStringExtra("pid");
        detailsPresenter = new DetailsPresenter(this);
        detailsPresenter.getData(pid);
        String path = Environment.getExternalStorageDirectory()+"/miniony.mp4";
        //视频播放
        MediaController mediaController = new MediaController(this);
        mVideoView.setMediaController(mediaController);
        mVideoView.setVideoURI(Uri.parse(path));
        mVideoView.requestFocus();
    }


    @Override
    public void success(DetailsBean.DataBean data) {
        //设置数据
        String[] split = data.getImages().split("\\|");
        mSimpleDetails.setImageURI(Uri.parse(split[0]));
        mTitle.setText(data.getTitle());
        mPrice.setText(data.getPrice()+"");

    }

    //防止内存泄露
    @Override
    protected void onDestroy() {
        super.onDestroy();
        detailsPresenter.detach();
    }

    @OnClick(R.id.addCart)
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.addCart:
                //加入购物车
                addCartPresenter.getData(pid);

                break;
        }
    }

    @Override
    public void success(String s) {
        if(s.equals("加购成功")){
            Intent intent = new Intent(DetailsActivity.this,ShopCartActivity.class);
            //intent.putExtra("pid",pid);
            startActivity(intent);
        }else{

            Toast.makeText(DetailsActivity.this,s,Toast.LENGTH_SHORT).show();
        }
    }
}

ShopCartActivity
public class ShopCartActivity extends AppCompatActivity implements CartPresenterListener {

    @BindView(R.id.expandView)
    ExpandableListView expandView;
    @BindView(R.id.checkAll)
    CheckBox mCheckAll;
    @BindView(R.id.zprice)
    TextView mZprice;
    @BindView(R.id.zcount)
    Button mZcount;
    @BindView(R.id.linear)
    RelativeLayout mLinear;
    @BindView(R.id.bianji)
    TextView mBianji;
    private MyAdapter myAdapter;
    private String edit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop_cart);

        ButterKnife.bind(this);
        CartPresenter myPresenter = new CartPresenter(this);
        myPresenter.getData();


    }

    @OnClick({R.id.checkAll, R.id.bianji,R.id.zcount})
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.checkAll:
                myAdapter.checkedAll(mCheckAll.isChecked());
                break;

            case R.id.bianji:

                break;
            case R.id.zcount:

                Intent intent = new Intent(ShopCartActivity.this,DingGoodsActivity.class);

                startActivity(intent);

                break;
        }
    }

    @Override
    public void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) {
        myAdapter = new MyAdapter(ShopCartActivity.this, group, child);
        myAdapter.setChangeListener(new MyAdapter.ChangeListener() {
            @Override
            public void setState(boolean flag) {

                mCheckAll.setChecked(flag);
            }

            @Override
            public void setText(String price, String count) {

                mZcount.setText("结算(" + count + ")");
                mZprice.setText("总计:" + price + "¥");

            }
        });
        expandView.setAdapter(myAdapter);

        //默认展开
        for (int i = 0; i < group.size(); i++) {
            expandView.expandGroup(i);
        }
    }
}

DingGoodsActivity
public class DingGoodsActivity extends AppCompatActivity {

    @BindView(R.id.tabLayout)
    TabLayout mTabLayout;
    @BindView(R.id.viewPager)
    ViewPager mViewPager;
    @BindView(R.id.imageView)
    ImageView mImageView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ding_goods);

        ButterKnife.bind(this);
        mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

            private String[] mTitles = new String[]{"全部", "待支付", "已支付", "已取消"};

            @Override
            public Fragment getItem(int position) {
                if (position == 1) {
                    return new TwoFragment();
                } else if (position == 2) {
                    return new ThreeFragment();
                } else if (position == 3) {
                    return new FourFragment();
                }
                return new OneFragment();
            }

            @Override
            public int getCount() {
                return mTitles.length;
            }

            @Override
            public CharSequence getPageTitle(int position) {
                return mTitles[position];
            }

        });

        mTabLayout.setupWithViewPager(mViewPager);


    }



    @OnClick({R.id.tabLayout, R.id.imageView})
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.tabLayout:
                break;
            case R.id.imageView:
                MyPopupWindow.showPopupWindow(mViewPager,DingGoodsActivity.this,mImageView);
                break;

        }
    }
}


Fragment
one_fragment
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

</LinearLayout>

OneFragment
public class OneFragment extends Fragment{
    private RecyclerView recyclerView;
  //全部
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //设置数据
        DingPresenter dingPresenter = new DingPresenter();
        Map<String, String> map = new HashMap<>();
        map.put("uid","71");
        map.put("page","1");
        map.put("source","android");
        RetrofitManager.get("product/getOrders", map, new BaseObserver<DingDBean>() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                MyDingAdapter myDingAdapter = new MyDingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }

            @Override
            public void failure(int code) {

            }


        });

    }
}
two_fragment
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>
</LinearLayout>

TwoFragment
public class TwoFragment extends Fragment{
    private RecyclerView recyclerView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.two_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DingPresenter dingPresenter = new DingPresenter();
        dingPresenter.getData("1","0", new DingPresenterListener() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                MyDingAdapter myDingAdapter = new MyDingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }
        });
    }
}

ThreeFragment
public class ThreeFragment extends Fragment{
    private RecyclerView recyclerView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.three_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DingPresenter dingPresenter = new DingPresenter();
        dingPresenter.getData("1","1", new DingPresenterListener() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                MyDingAdapter myDingAdapter = new MyDingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }
        });
    }
}
three_fragment
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</android.support.v7.widget.RecyclerView>
</LinearLayout>


four_fragment
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>
</LinearLayout>

FourFragment
public class FourFragment extends Fragment{
    private RecyclerView recyclerView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.four_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DingPresenter dingPresenter = new DingPresenter();
        dingPresenter.getData("1","2", new DingPresenterListener() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                MyDingAdapter myDingAdapter = new MyDingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }
        });
    }
}

activity_second
<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
    android:layout_height="match_parent"
>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>
</LinearLayout>
activity_register
<?xml version="1.0" encoding="utf-8"?>
<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"
>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="淘宝注册"
            android:textColor="#000"
            android:textSize="20sp"
            android:layout_centerInParent="true"
            />
    </RelativeLayout>
    <LinearLayout
        android:layout_marginTop="60dp"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账号"
            />
        <EditText
            android:id="@+id/adminFive"
            android:layout_marginRight="20dp"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="请输入你的账号"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_gravity="center_horizontal"

        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码"
            />
        <EditText
            android:id="@+id/pwdFive"
            android:layout_marginRight="20dp"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="请输入你的密码"
            />

    </LinearLayout>
    <LinearLayout
        android:layout_gravity="center_horizontal"

        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确认密码"
            />
        <EditText
            android:id="@+id/affirm"
            android:layout_marginRight="20dp"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="请再次输入你的密码"
            />

    </LinearLayout>
    <LinearLayout
        android:layout_gravity="center_horizontal"

        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="20sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="邮箱"
            />
        <EditText
            android:id="@+id/email"
            android:layout_marginRight="20dp"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="请输入你的邮箱"
            />

    </LinearLayout>

    <Button
        android:id="@+id/loginFive"
        android:textColor="#888888"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/shape_activity"
        android:layout_marginTop="30dp"
        android:layout_width="350dp"
        android:layout_height="50sp"
        android:textSize="20sp"
        android:text="注册"
        />
</LinearLayout>

activity_details
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <VideoView
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:id="@+id/videoView"
            />
        <com.facebook.drawee.view.SimpleDraweeView
            android:id="@+id/simpleDetails"
            android:layout_width="match_parent"
            android:layout_height="200dp" />
        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="标题"
            android:textSize="20sp"
            />
        <TextView
            android:textColor="#FEB016"
            android:id="@+id/price"
            android:layout_marginTop="5dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="价格"
            android:textSize="20sp"
            />
    </LinearLayout>
<LinearLayout
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_marginTop="10dp"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content">
        <ImageView
            android:layout_width="0dp"
            android:src="@mipmap/ic_launcher"
            android:layout_height="30dp"
            android:layout_weight="1"
            />
        <ImageView
            android:layout_width="0dp"
            android:src="@mipmap/ic_launcher"
            android:layout_height="30dp"
            android:layout_weight="1"
            />
        <ImageView
            android:layout_width="0dp"
            android:src="@mipmap/ic_launcher"
            android:layout_height="30dp"
            android:layout_weight="1"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_marginLeft="25dp"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <Button
            android:id="@+id/addCart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#fff"
            android:background="#ff0"
            android:text="加入购物车"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#fff"
            android:background="#f00"
            android:text="立即购买"
            />
    </LinearLayout>

</LinearLayout>


</RelativeLayout>

activity_shop_cart
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".activity.ShopCartActivity">
    <RelativeLayout
        android:id="@+id/linear2"
        android:background="#000"
        android:layout_width="match_parent"
        android:layout_height="60dp">
        <TextView
            android:layout_centerInParent="true"
            android:textColor="#fff"
            android:textSize="20sp"
            android:text="购物车"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/bianji"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="编辑"
            android:textColor="#fff"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="10dp"
            android:layout_marginRight="10dp"
            />


    </RelativeLayout>

    <ExpandableListView
        android:layout_below="@+id/linear2"
        android:groupIndicator="@null"
        android:layout_above="@+id/linear"
        android:id="@+id/expandView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ExpandableListView>
    <RelativeLayout
        android:background="#AAAAAA"
        android:id="@+id/linear"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="70dp">
        <CheckBox
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="全选"
            android:id="@+id/checkAll"
            />
        <TextView
            android:id="@+id/zprice"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="总计:0.0¥"
            android:layout_centerInParent="true"
            />
        <Button
            android:id="@+id/zcount"
            android:textColor="#fff"
            android:background="#FF0000"
            android:text="结算(0)"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            />
    </RelativeLayout>
</RelativeLayout>

activity_ding_goods
<?xml version="1.0" encoding="utf-8"?>
<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"
   >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        >
        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="订单页面"
            />
        <ImageView
            android:src="@mipmap/ic_launcher"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:id="@+id/imageView"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            />
    </RelativeLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#000"
        />
    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        >
    </android.support.design.widget.TabLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
        </android.support.v4.view.ViewPager>





</LinearLayout>

product_recycler_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:gravity="center_vertical"
    android:id="@+id/linear"
    android:layout_height="match_parent">
    <com.facebook.drawee.view.SimpleDraweeView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/simpleDrawee"
        />
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/price"
            android:text="价格"
            />
        <TextView
            android:layout_marginTop="20dp"
            android:text="标题"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/titleTextview"
            />
    </LinearLayout>

</LinearLayout>
item_expandable_listview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">
    <CheckBox
        android:id="@+id/groupChecked"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/groupTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="标题"
        />
</LinearLayout>

item_listview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:id="@+id/linearLayoutItem"
    android:gravity="center_vertical"
    android:layout_height="match_parent">

    <CheckBox
        android:layout_marginLeft="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/childChecked"
        />
    <com.facebook.drawee.view.SimpleDraweeView

        android:layout_marginLeft="5dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/simpleDraw"
        fresco:placeholderImage="@mipmap/ic_launcher"
        fresco:retryImage="@mipmap/ic_launcher"
        />
    <LinearLayout
        android:layout_marginLeft="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:textSize="16sp"
            android:textStyle="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/childTitle"
            android:text="标题"
            />
        <TextView
            android:paddingTop="20dp"
            android:paddingBottom="20dp"
            android:text="描述"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/miaoShu"
            />
        <LinearLayout
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:textSize="16sp"
                android:textColor="#FCB950"
                android:text="价格"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:id="@+id/childPrice"
                />
            <TextView
                android:text="优惠"
                android:id="@+id/childPriceY"

                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                />


            <com.bawei.goodscar.widgit.CustomLinearLayout
                android:id="@+id/customLinearLayout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

            </com.bawei.goodscar.widgit.CustomLinearLayout>


        </LinearLayout>

    </LinearLayout>

</LinearLayout>
fragment_item
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:id="@+id/relative"
    android:orientation="horizontal"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_centerVertical="true"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="sada"
            android:id="@+id/titleView"
            />
        <TextView
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="价格"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/price"
            />
        <TextView
            android:text="时间"
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />


    </LinearLayout>

    <LinearLayout
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:textColor="#f00"
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="待支付"

            />
        <Button
            android:layout_marginTop="10dp"
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="待支付"
            />
    </LinearLayout>

</RelativeLayout>









  











你知道几种数字地与模拟地连接方式及优缺点? 频率选择性:磁珠的阻抗特性随频率变化,只对某个频点的噪声有显著抑制作用,对于频率不确定或无法预知的情况,可能不是最佳选择。在实际应用中,选择合适的连接方式需要根据具体的电路频率、信号类型、设计要求等因素综合考虑,以达到最佳的电磁兼容效果.高频信号干扰:在高频电路中,单点接地可能导致信号回流路径过长,增加地线电感,从而引入高频噪声。限制噪声电流:0欧姆电阻相当于一个非常窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。抑制高频信号:电感对高频信号有较大的阻碍作用,可以有效抑制高频噪声。 阅读详情

相关推荐

Autodesk全家桶:从AutoCAD到Maya,设计师必备的7款神器全解析

本文全面解析Autodesk全家桶中的7款设计师必备软件,包括AutoCAD、Revit、Inventor、Fusion 360、Maya和3ds Max等。从二维制图到三维建模,从建筑信息模型(BIM)到影视动画制作,这些工具在工程设计、建筑可视化和数字创意领域展现出强大的协同效应。通过实战案例展示如何整合工作流,显著提升设计效率与项目质量。

weixin_29237635的博客 460

Gradle引入外部资源冲突问题,Gradle版本库冲突解决

博客来源: 初学Gradle过程中,遇到引入版本库时对于依赖的版本库有多种级别,然后系统就全部给我加载进来……按道理来讲,高版本兼容低版本,不会出什么问题 but,bug就这么来了…Gradle ———><项目> ————> help ————> dependencies,可以查看gradle依赖的版本 来看一下,版本依赖升级了……出现了版本库冲突…… 一般来说也不会出问题,可是28以上,增加了功能,导致找不到相应配置 解决方法:那自然是排除依赖啦,...

技匠而已 2万+

十一种室内定位传感器方案汇总介绍与对比(机器人、物联网领域)

室内定位传感器方案汇总 目录 室内定位传感器方案汇总 1、定位方案概述 1.1、内定位系统有最基本的5种算法: 1.2、常用的室内定位技术主要包括以下几种: 1.3、定位理论 1.4、不同的定位方案对比 2、各种定位方案详细介绍 2.1、单线激光定位 2.2、多线激光定位: 2.3、视觉定位: 2.4、基于射频识别(RFID)技术室内定位 2.4.1、RFID标签(不涉及...

JK-Cool的博客 3万+

Android Studio 添加依赖后出现飘红 需添加noinspection GradleCompatible注释

出现此情况的原因之一就是,该依赖的代码中引用了另一个第三方架包,比如V4包,V7包,因此需要在项目中添加该依赖缺少的架包。

KDSRS的博客 1万+

HybridCLR热更新全流程实操:用Addressables实现资源+代码双热更(Unity 2021版)

本文详细介绍了在Unity 2021 LTS版本中,如何结合HybridCLR代码热更新与Addressables资源管理系统,实现资源与代码的双热更解决方案。通过环境配置、技术架构设计、实战案例和性能优化,帮助开发者解决中大型项目中的依赖管理和版本协同问题,提升游戏迭代效率。

cc789的博客 845

多模态情感识别(MER)数据集实战指南:从IEMOCAP到应用落地

本文提供了多模态情感识别(MER)从数据集到应用落地的完整实战指南。以经典IEMOCAP数据集为例,详细讲解了音频、视觉、文本等多模态数据的预处理、特征提取与融合技术,并分享了模型训练调优心得及面向智能客服、在线教育等场景的部署考量,帮助开发者快速构建高效可用的MER系统。

h3i4j的博客 1069

AndroidStudio Add as Library 失败

当你导入一个新的 jar 到 libs 目录下后想要 右键Add as Library 添加库引用的时候却发现老师添加失败,偶尔as会弹出报错提示框,这是时候你可以选择 Bulid 重新清除工程 或者 重新编译一下,如果还是不好使看下面的。 1.找到你 工程目录下的build.gradle,找到dependencies 看看下边是否有一句 implementation fileTree(dir: ‘libs’, include: [’.jar’]) ,如果有 尝试将 implementation f

小智队长 2848

QNX Neutrino 进程间通信编程之Message-passing/Pulse

Interprocess Communication(IPC,进程间通信)在QNX Neutrino从一个嵌入式实时系统向一个全面的POSIX系统转变起着至关重要的作用。IPC是将在内核中提供各种服务的进程内聚在一起的粘合剂。在QNX中,消息传递是IPC的主要形式,也提供了其他的形式,除非有特殊的说明,否则这些形式也都是基于本地消息传递而实现的。本篇幅主要讲解Message-passing和Pulse。

zhuwade的博客 3533

android studio最新版引用项目的libs目录下的jar,arr文件

implementation fileTree(include:['*.jar'], dir:'libs') implementation fileTree(include:['*.aar'], dir:'libs')

KindSuper_liu的专栏 7336

【云原生系列】第一讲:什么是云计算

云计算(cloud computing):分布式:分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,合并&反馈:通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期:分布式计算:简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过分布式计算,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。现阶段:计算:分布式计算、效用计算、负载均衡、并行计算、存储。

颜淡慕潇 1万+

全桥 LLC 谐振变换器详细解析:结构 + 控制 + 工作原理全搞懂!

在现代高效率电源系统中,LLC 谐振变换器🔥早已成为降损利器。尤其是全桥 LLC 拓扑结构,由于其在、副边整流管的 ZCS(零电流关断),再加上优秀的效率表现,已经成为服务器电源、电动汽车 OBC、光伏逆变等场景的首选。那么,全桥 LLC 到底长啥样?它的控制方式是怎么回事?具体工作波形又是如何呢?今天我们就来一篇讲清楚、讲透彻的文章!🚗💨。

weixin_43199439的博客 3514

AndroidStudio引入JAR包

在使用百度地图进行期末作业开发的时候发现无法引入jar包,采用网上的教程,即在AndroidManifest.xml中添加下面的语句也无法解决。右击想要导入的jar包,选择”Add as Library“,选择当前的module后解决。报错显示个人解读是为由于版本更新导致的写法不互通,网络上也没找到最新版书写方式。因此向各位大佬提问,上述报错的方法应该采用何种方法解决。

weixin_73957282的博客 590

在RStudio中使用GitHub Copilot:代码自动生成,从此告别手敲!

可以通过自定义提示词来引导Copilot生成符合自己需求的代码。再看一个做统计分析的。

Codewar的博客 330

Android Studio中Gradle依赖详解

一、不同类型的library引入方案: 1、本地Module library依赖: 通过这种方式依赖的弊端是每次都需要构建module,当module比较多时构建非常耗时,建议控制module的依赖数量,避免构建耗时 //module需要在项目根目录下的settings.gradle中通过include引入 implementation project('...

cpongo5 628

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android Studio 添加jar或aar依赖的两种方式

这里假设jar和aar都放到module的libs目录下. 方式一 在module目录下的build.gradle的dependencies中,添加 implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') 此种方式简单粗暴,但是不允许同时出现同一模块不同编译类型的jar(或aar), 例如,如果libs同...

fengyulinde的博客 6万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

androidstudio引用第三方库综合

本文转自:https://www.cnblogs.com/whycxb/p/9095959.html 来自于HaiyuKing原创文章 概述 在Android开发过程,经常需要用到第三方库以及jar、so、arr文件,那么如何引用到项目中呢?下面简单介绍下。 引用第三方库 一般按照第三方库作者提供的引用方式进行引用即可。 比如,以引用okhttp-utils开源库为例: 在module(比如app)的build.gradle文件中添加下面的代码 注意:旧版本Android studio的

liyang_nash的专栏 1374

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

《第一行代码》Android学习笔记(1)AndroidStudio 使用

目录 一、下载 二、项目结构 # 主题、字体设置 # 真机调试 # 常用功能 三、快捷键 # 自动导包 四、Gradle配置详解 # 全局文件build.gradle # app 中的build.gradle文件 五、快捷输入 # logt 自动生成 TAG 常量 # logd 生成 Log.d 六、修改项目包名【可行】 七、签名 —— 保证开发者合法; 一...

Cou流氓也要有文化的博客 656

关于安卓一些报错的解决方法(随时更新)

1.Program type already present 依赖包冲突 All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.1.1, 25.3.0. E...

weixin_30739595的博客 467

添加编译依赖项(依赖项类型)

依赖项类型 要向您的项目添加依赖项,请在build.gradle文件的dependencies代码块中指定依赖项配置,如implementation。 例如,应用模块的以下build.gradle文件包含三种不同类型的依赖项: apply plugin: 'com.android.application' android { ... } d...

qq_32329745的博客 1333

Android 进阶 仿得到详情页滑动头部变色

  1.依赖 maven { url "https://jitpack.io" } //noinspection GradleCompatible implementation 'com.android.support:design:26.1.0' //RecyclerView 快速适配器 compile 'com.github.Cym...

FlyPig_Vip的博客 1323

使用LazyViewPager,实现完整的懒加载ViewPager

功能:利用懒加载类LazyViewPager实现完整的不预加载ViewPager,同时在类中添加一个函数用于控制是否支持横向滑动切换ViewPager(适用于有些fragment包含可左滑删除的列表,禁用左右切换ViewPage方可实现左滑删除功能,防止滑动事件冲突)。 以下主要讲的是Acitvity中如何利用LazyViewPager类实现懒加载ViewPager,可以点击tab切换或者滑动切...

May-gemini的博客 2244

Android androidStudio构建项目过程中问题解决方案(持续更新)

Android androidStudio构建项目过程中问题解决方案(持续更新)

5084

关于Android构建出现Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVar问题...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34306676的博客 321

最全Android build.gradle配置详解

Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的。当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: 一、Project的build.gradle文件: 对应的build.gradle代码如下: // To...

cmyperson的博客 1049

安卓项目依赖library,同时需要依赖library中libs下aar文件的两种依赖方式

先在library中添加aar依赖 //添加一个本地仓库,并将libs目录作为仓库地址 repositories{ flatDir { dirs 'libs' } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation (n...

he先森的博客 3530

Android Studio build.gradle配置详解

Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的。当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: build.gradle位置.png 一、Project的build.gradle文件: 对应的build.gradle代码如下: // Top-level build file where you can add

h_bpdwn的博客 2万+
上一篇: 购物车跳转到支付
下一篇: Retrofit
gh0708
博客等级 码龄9年 5粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值