MVP+Retrofit+RxJava一个从登陆到购物车的小Demo

依赖

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.android.support:recyclerview-v7:26.0.0-alpha1'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
    compile 'com.facebook.fresco:fresco:0.12.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'org.greenrobot:eventbus:3.1.1'
    compile 'com.android.support:design:23.2.1'
网络框架另一篇文章里

MD5和图片缓存和自定义加减另一篇

接下来是MVP分包工作了

首先是View层

登陆

public class MainActivity extends AppCompatActivity implements LoginPresenter.ILoginView {

    private long extime=0;
    @BindView(R.id.et_name)
    EditText etName;
    @BindView(R.id.et_pwd)
    EditText etPwd;
    @BindView(R.id.bt_login)
    Button btLogin;
    @BindView(R.id.bt_regist)
    TextView btRegist;
    @BindView(R.id.forgetFive)
    TextView forgetFive;

    LoginPresenter loginPresenter;
    private String name;
    private String pwd;

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

    @OnClick({R.id.bt_login, R.id.bt_regist})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.bt_login:
                name = etName.getText().toString().trim();
                pwd = etPwd.getText().toString().trim();
                loginPresenter.getData(name, pwd);
                break;
            case R.id.bt_regist:
                startActivity(new Intent(MainActivity.this,RegisterActivity.class));
                break;
        }
    }

    @Override
    public void success(String s) {
        if("登录成功".equals(s)){
            LoginMD5.getMD5(name);
            Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
            //跳转到列表页面
            Intent intent = new Intent(MainActivity.this, LieBiaoActivity.class);
            startActivity(intent);
        }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 getname(String s) {
        Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
    }

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

    //销毁防止内存泄漏
    @Override
    protected void onDestroy() {
        super.onDestroy();
        loginPresenter.detach();
    }
    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()-extime>2000)){
            Toast.makeText(getApplicationContext(), "再按一次退出程序",
                    Toast.LENGTH_SHORT).show();
            extime=System.currentTimeMillis();
        }else{
            finish();
            System.exit(0);
        }
    }
}
注册

public class RegisterActivity extends AppCompatActivity  implements RegistPrestener.IRegistView{

    @BindView(R.id.name)
    EditText name;
    @BindView(R.id.pwd)
    EditText pwd;
    @BindView(R.id.mpwd)
    EditText mpwd;
    @BindView(R.id.email)
    EditText email;
    @BindView(R.id.regist)
    Button regist;
    private RegistPrestener registPrestener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        ButterKnife.bind(this);
        registPrestener=new RegistPrestener(this);
    }

    @OnClick(R.id.regist)
    public void onViewClicked() {
        String name1 = name.getText().toString().trim();
        String pwd1 = pwd.getText().toString().trim();
        String mpwd1 = mpwd.getText().toString().trim();
        String email1 = email.getText().toString().trim();
        registPrestener.getData(name1,pwd1,mpwd1,email1);

    }

    @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 getname(String s) {
        Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void getpwd(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();
        registPrestener.detach();
    }
}
列表

public class LieBiaoActivity extends AppCompatActivity implements LieBiaoPrestener.ILiebiaoView{

    @BindView(R.id.rv)
    RecyclerView rv;

    private LieBiaoPrestener lieBiaoPrestener;
    private LieBiaoAdapter lieBiaoAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lie_biao);
        ButterKnife.bind(this);
        lieBiaoPrestener=new LieBiaoPrestener(this);
        lieBiaoPrestener.getdata();
    }

    @Override
    public void success(List<DataDataBean.DataBean> dataBeans) {
        rv.setLayoutManager(new LinearLayoutManager(this));
        lieBiaoAdapter = new LieBiaoAdapter(LieBiaoActivity.this, dataBeans);
        rv.setAdapter(lieBiaoAdapter);
    }

    //销毁防止内存泄漏
    @Override
    protected void onDestroy() {
        super.onDestroy();
        lieBiaoPrestener.detach();
    }
}
详情页

public class XiangQingActivity extends AppCompatActivity  implements XiangQingPrestener.IXiangqingView,AddCartPrestener.IAddCartView{

    @BindView(R.id.videoView)
    VideoView videoView;
    @BindView(R.id.simpleDetails)
    SimpleDraweeView simpleDetails;
    @BindView(R.id.title)
    TextView title;
    @BindView(R.id.price)
    TextView price;
    @BindView(R.id.addCart)
    Button addCart;

    private String pid;
    private AddCartPrestener addCartPrestener;
    private XiangQingPrestener xiangQingPrestener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xiang_qing);
        ButterKnife.bind(this);
        addCartPrestener=new AddCartPrestener(this);
        xiangQingPrestener=new XiangQingPrestener(this);

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

    }

    @OnClick(R.id.addCart)
    public void onViewClicked() {
        addCartPrestener.getData(pid);
    }

    @Override
    public void success(DetailsBean.DataBean list) {
        //设置数据
        String[] split = list.getImages().split("\\|");
        simpleDetails.setImageURI(Uri.parse(split[0]));
        title.setText(list.getTitle());
        price.setText(list.getPrice()+"");
    }

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

    //防止内存泄漏
    @Override
    protected void onDestroy() {
        super.onDestroy();
        xiangQingPrestener.detach();
    }
}
购物车

public class ShopCartActivity extends AppCompatActivity implements ShopCartPrestener.ICartView {

    @BindView(R.id.bianji)
    TextView bianji;
    @BindView(R.id.linear2)
    RelativeLayout linear2;
    @BindView(R.id.expandView)
    ExpandableListView expandView;
    @BindView(R.id.checkAll)
    CheckBox checkAll;
    @BindView(R.id.zprice)
    TextView zprice;
    @BindView(R.id.zcount)
    Button zcount;
    @BindView(R.id.linear)
    RelativeLayout linear;

    private ShopCartPrestener shopCartPrestener;
    private ElvAdapter elvAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop_cart);
        ButterKnife.bind(this);
        shopCartPrestener = new ShopCartPrestener(this);
        shopCartPrestener.getData();
    }

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

            @Override
            public void setText(String price, String count) {
                zcount.setText("结算(" + count + ")");
                zprice.setText("总计:" + price + "¥");
            }
        });
        expandView.setAdapter(elvAdapter);
        //默认展开
        //默认展开
        for (int i = 0; i < group.size(); i++) {
            expandView.expandGroup(i);
        }
    }


    @OnClick({R.id.checkAll, R.id.zcount})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.checkAll:
                elvAdapter.checkedAll(checkAll.isChecked());
                break;
            case R.id.zcount:
                Intent intent = new Intent(ShopCartActivity.this,DingGoodsActivity.class);

                startActivity(intent);
                break;
        }
    }
}
订单

public class DingGoodsActivity extends AppCompatActivity {


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

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ding_goods);
        ButterKnife.bind(this);
        viewPager.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];
            }
        });

        tabLayout.setupWithViewPager(viewPager);
    }

    @OnClick(R.id.imageView)
    public void onViewClicked() {
        MyPopupWindow.showPopupWindow(viewPager,DingGoodsActivity.this,imageView);

    }
}
接下来就到了Model层了

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

            @Override
            public void failure(int code) {

            }
        });
    }
    public interface ILoginModel {
        void success(LoginBean loginBean);
    }
}
public class RegistModel {
    public void getData(String name, String pwd, final IRgistModel iRgistModel){
        Map<String ,String> map=new HashMap<>();
        map.put("mobile",name);
        map.put("password",pwd);
        RetrofitManager.get("user/reg",map, new BaseObserver<RegisterBean>() {
            @Override
            public void success(RegisterBean registerBean) {
                if(iRgistModel!=null){
                    iRgistModel.success(registerBean);
                }
            }

            @Override
            public void failure(int code) {

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

}
public class LieBiaoModel {

    public void getData(final ILiebiaoModel iLiebiaoModel){
        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(iLiebiaoModel!=null){
                    iLiebiaoModel.success(dataDataBean);
                }
            }

            @Override
            public void failure(int code) {

            }
        });
    }

    public interface  ILiebiaoModel{
        void success(DataDataBean dataDataBean);
    }
}
public class XiangQingModel {

    public void getData(String pid, final IXiangqingModel iXiangqingModel){
        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(iXiangqingModel!=null){
                    iXiangqingModel.success(detailsBean);
                }
            }

            @Override
            public void failure(int code) {

            }
        });
    }
    public interface IXiangqingModel {
        void success(DetailsBean deatails);
    }
}
public class ShopCartModel {
    public void getData(final IShopCart iCartModel){
        Map<String,String> map=new HashMap<>();
        map.put("uid","11738");
        map.put("source","android");
        RetrofitManager.get("product/getCarts",map, new BaseObserver<CartBean>() {
            @Override
            public void success(CartBean cartBean) {
                if(iCartModel!=null){
                    iCartModel.success(cartBean);
                }
            }

            @Override
            public void failure(int code) {

            }
        });
    }
    public interface IShopCart {
        void success(CartBean cartBean);
    }
}
public class DingModel {
    //订单的数据
    public void getData(String page,String status, final IDingModel 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) {

            }

        });
    }
    public interface IDingModel{

        void success(DingDBean dingDBean);
    }
}
然后是P层

public class LoginPresenter {
    ILoginView iLoginView;
    LoginModel loginModel;

    public LoginPresenter(ILoginView iLoginView) {
        this.iLoginView = iLoginView;
        loginModel=new LoginModel();
    }
    public void getData(String name,String pwd){
        //判断用户名为空
        if(TextUtils.isEmpty(name)){
            if(iLoginView!=null){
                iLoginView.getname("用户名不能为空");
                return;
            }
        }
        //判断密码是否为空
        if(TextUtils.isEmpty(pwd)){
            if(iLoginView!=null){
                iLoginView.getpwd("密码不能为空");
            }
        }
        //调用M层数据
        loginModel.getData(name, pwd, new LoginModel.ILoginModel() {
            @Override
            public void success(LoginBean loginBean) {
                if(iLoginView!=null){
                    iLoginView.success(loginBean.getMsg());
                }
            }
        });
    }

    //内存泄漏
    public void detach(){
        iLoginView=null;
    }
    public interface ILoginView {
        void success(String s);
        void failed(String s);
        void getname(String s);
        void getpwd(String s);
    }

}
public class RegistPrestener {
    IRegistView iRegistView;
    RegistModel registModel;

    public RegistPrestener(IRegistView iRegistView) {
        this.iRegistView = iRegistView;
        registModel=new RegistModel();
    }
    public void getData(String name,String pwd,String mpwd,String email){
        //判断用户名不能为空
        if(TextUtils.isEmpty(name)){
            if(iRegistView!=null){
                iRegistView.getname("用户名不能为空");
                return;
            }
        }
        //判断密码不能为空
        if(TextUtils.isEmpty(pwd)){
            if(iRegistView!=null){
                iRegistView.getpwd("密码不能为空");
                return;
            }
            //判断输入二次密码
            if(TextUtils.isEmpty(mpwd)){
                if(iRegistView!=null){
                    iRegistView.confrim("确认密码不能为空");
                    return;
                }
                if(!mpwd.equals(pwd)){
                    if(iRegistView!=null){
                        iRegistView.confrim("两次密码不一样");
                        return;
                    }
                }
            }
            boolean email1=isEmail(email);
            if(!email1){
                if(iRegistView!=null){
                    iRegistView.email("邮箱格式不正确");
                    return;
                }
            }
        };
        //调用m层数据
        registModel.getData(name,pwd, new RegistModel.IRgistModel() {
            @Override
            public void success(RegisterBean registerBean) {
                if(iRegistView!=null){
                    iRegistView.success(registerBean.getMsg());
                }
            }
        });
    }

    //防止内存泄漏
    public void detach(){
        iRegistView=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();
    }
    public interface IRegistView {
        void success(String s);
        void failed(String s);
        void getname(String s);
        void getpwd(String s);
        void email(String s);
        void confrim(String s);
    }
}
public class LieBiaoPrestener {
    LieBiaoModel lieBiaoModel;
    ILiebiaoView iLiebiaoView;

    public LieBiaoPrestener(ILiebiaoView iLiebiaoView) {
        this.iLiebiaoView = iLiebiaoView;
        lieBiaoModel=new LieBiaoModel();
    }
    //数据传到view层
    public void getdata(){
        lieBiaoModel.getData(new LieBiaoModel.ILiebiaoModel() {
            @Override
            public void success(DataDataBean dataDataBean) {
                if(iLiebiaoView!=null){
                    iLiebiaoView.success(dataDataBean.getData());
                }
            }
        });
    }
    public void detach(){
        iLiebiaoView=null;
    }

    public interface ILiebiaoView{
        void success(List<DataDataBean.DataBean> dataBeans);
    }
}
public class XiangQingPrestener {
    IXiangqingView iXiangqingView;
    XiangQingModel xiangQingModel;

    public XiangQingPrestener(IXiangqingView iXiangqingView) {
        this.iXiangqingView = iXiangqingView;
        xiangQingModel=new XiangQingModel();
    }
    public void getData(String pid){
        xiangQingModel.getData(pid, new XiangQingModel.IXiangqingModel() {
            @Override
            public void success(DetailsBean deatails) {
                if(iXiangqingView!=null){
                    iXiangqingView.success(deatails.getData());
                }
            }
        });
    }


    public interface  IXiangqingView{
        void success(DetailsBean.DataBean list);
    }
    public void detach(){
        iXiangqingView=null;
    }
}
public class ShopCartPrestener {
    ShopCartModel cartModel;
    ICartView iCartView;

    public ShopCartPrestener(ICartView iCartView) {
        this.iCartView = iCartView;
        cartModel=new ShopCartModel();
    }
    public void getData(){
        cartModel.getData(new ShopCartModel.IShopCart() {
            @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(iCartView!=null){
                    iCartView.success(group,child);
                }

            }
        });
    }

    public interface ICartView {
        void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child);
    }
}
public class DingPrestener {
   DingModel dingModel=new DingModel();
    public void getData(String page,String status, final IDingView dingPresenterListener){
        dingModel.getData(page,status, new DingModel.IDingModel() {
            @Override
            public void success(DingDBean dingDBean) {
                if(dingPresenterListener!=null){
                    dingPresenterListener.success(dingDBean);
                }
            }
        });
    }

    public interface IDingView{
        void success(DingDBean dingDBean);
    }
}
订单的四个Fragment页面

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);
        DingPrestener dingPresenter = new DingPrestener();
        dingPresenter.getData("1","2", new DingPrestener.IDingView() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }
        });
    }
}
public class OneFragment extends Fragment {

    private RecyclerView recyclerView;

    @Nullable
    @Override
    public View onCreateView(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);
        //设置数据
        DingPrestener dingPrestener=new DingPrestener();
        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()));
                DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(dingAdapter);
            }

            @Override
            public void failure(int code) {

            }
        });
    }
}
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);
        DingPrestener dingPresenter = new DingPrestener();
        dingPresenter.getData("1","1", new DingPrestener.IDingView() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }
        });
    }
}
public class TwoFragment extends Fragment {
    private RecyclerView recyclerView;
    @Nullable
    @Override
    public View onCreateView(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);
        DingPrestener dingPrestener=new DingPrestener();
        dingPrestener.getData("1", "0", new DingPrestener.IDingView() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(dingAdapter);
            }
        });
    }
}
bean类太多了没办法,自己解析吧

接下来是适配器

订单的适配器

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

    public DingAdapter(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);

        }
    }
}
购物车适配器

public class ElvAdapter extends BaseExpandableListAdapter {
    Context context;
    List<CartBean.DataBean> group;
    List<List<CartBean.DataBean.ListBean>> child;
    private Holder1 holder1;
    private Holder2 holder2;
    public ElvAdapter(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);
            holder2.bt2=convertView.findViewById(R.id.bt_del);

            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.bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                List<CartBean.DataBean.ListBean> list = group.get(groupPosition).getList();
                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();
            }
        });*/
    holder2.bt2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             //其实就是删除集合
             List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
             if (listBeans.size() > 0) {
                 listBeans.remove(childPosition);
             }
             if (listBeans.size() == 0) {
                 child.remove(groupPosition);
                 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;
        Button bt2;
    }
}
列表适配器

public class LieBiaoAdapter extends RecyclerView.Adapter{
    private Context context;
    private 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 LieBiaoAdapter(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.liebiao_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 view) {
               Intent intent = new Intent(context,XiangQingActivity.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.title_t);
            price = itemView.findViewById(R.id.price);
            linearLayout = itemView.findViewById(R.id.linear);
        }
    }
}
Xml文件太多了

订单Ac的

<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.example.administrator.view.DingGoodsActivity">
    <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>
列表Ac的

<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"
    tools:context="com.example.administrator .view.LieBiaoActivity">

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rv"></android.support.v7.widget.RecyclerView>
</LinearLayout>
登录Ac的

<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"
    tools:context="com.example.administrator 1.view.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/et_name"
            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/et_pwd"
            android:layout_marginRight="20dp"
            android:layout_width="250dp"
            android:inputType="textPassword"
            android:layout_height="wrap_content"
            android:hint="请输入你的密码"
            />
    </LinearLayout>
    <Button
        android:id="@+id/bt_login"
        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/bt_regist"
            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>
注册Ac的

<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.example.administrator. .view.RegisterActivity">
    <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/name"
            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/pwd"
            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/mpwd"
            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/regist"
        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>
购物车Ac的

<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="com.example.administrator.view.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>
详情Ac的

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.view.XiangQingActivity">
    <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>
自定义加减的
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="match_parent">
        <Button
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:text="-"
            android:id="@+id/jian"
            />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/edit"
            />
        <Button
            android:text="+"
            android:id="@+id/jia"
            android:layout_width="35dp"
            android:layout_height="35dp" />
    </LinearLayout>
</LinearLayout>
fragment适配的

<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>
购物车父

<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>
购物车子

<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"
            />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="删除"
            android:layout_marginLeft="20dp"
            android:id="@+id/bt_del"/>
        <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.example.administrator.yuekao1.util.CustomLinearLayout
                android:id="@+id/customLinearLayout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

            </com.example.administrator.yuekao1.util.CustomLinearLayout>>


        </LinearLayout>

    </LinearLayout>

</LinearLayout>
列表的

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:id="@+id/linear"
    android:gravity="center_vertical"
    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/title_t"
            />
    </LinearLayout>
</LinearLayout>
popwindou
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ffffff"
    android:orientation="vertical"
    android:paddingBottom="2dp">


    <TextView
        android:textSize="20sp"
        android:id="@+id/pop_computer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="待支付"/>



    <TextView
        android:textSize="20sp"

        android:id="@+id/pop_financial"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="已支付"/>


        />

    <TextView
        android:textSize="20sp"

        android:id="@+id/pop_manage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:text="已取消"/>



</LinearLayout>
四个Fragment的自己敲,每个里面就是一个Recylerview,

实在是太多了太累了,就写到这里。






















  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值