登录注册+商品列表+商品详情

这篇博客主要介绍了如何在移动应用中实现登录注册功能以及商品列表和商品详情的展示。涵盖了从依赖到各个层(接口Service、M层、P层、V层)的详细说明,包括接口定义、实体类、活动页面(如MainActivity、ResActivity注册页面)以及商品列表接口(IGoodsView)和页面、适配器的实现。此外,提到了登录数据、注册数据、商品数据的处理以及相关Bean类的设计。

/--------依赖------------/

//Recycleview依赖
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
//GSON依赖
compile 'com.google.code.gson:gson:2.2.4'
//butterknife(黄油刀)
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//SimpleDraweeView加载图片的依赖:
compile 'com.facebook.fresco:fresco:1.5.0'
//rxjava
compile 'io.reactivex:rxjava:1.1.6'
compile 'io.reactivex:rxandroid:1.2.1'
//retrofit2
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
//glide依赖包
compile 'com.github.bumptech.glide:glide:3.7.0'
/----------权限---------------/

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

工具包 

public class HttpConfig {

    //https://www.zhaoapi.cn/product/getProducts
    //当前子分类下的商品列表(分页)
    public static String base_url="http://120.27.23.105/";

}

接口Service

public interface MyService {
    //登录
    @FormUrlEncoded
    @POST("user/login")
    Observable<LoginUserBean> loginpost(@FieldMap Map<String,String> map);

    //注册
    @FormUrlEncoded
    @POST("user/reg")
    Observable<RegBean> regpost(@FieldMap Map<String,String> map);

    //获取商品列表
    @GET("product/getProducts")
    Observable<GoodsBean> getGoodsListData(@Query("pscid") String pscid,@Query("page") String page);
    //添加购物车
    //添加购物车
    @GET("product/addCart")
    Observable<AddBean> addCart(@Query("uid") String uid, @Query("pid") String pid);

}
网络请求工具包
public class RetrofitUtils {
    //单利模式
    private static RetrofitUtils retrofitUtils;
    private final Retrofit retrofit;

    public static RetrofitUtils getRetrofitUtils(){
        //判断
        if(retrofitUtils==null){
            retrofitUtils=new RetrofitUtils();
        }
        return retrofitUtils;
    }

    public RetrofitUtils(){
        retrofit=new Retrofit.Builder()
                .baseUrl(HttpConfig.base_url)
                .addConverterFactory(GsonConverterFactory.create(new Gson()))
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
    }

    public <T> T createRequest(Class<T> clz){
        T t = retrofit.create(clz);
        return t;
    }

}

M层  

public interface IModel {
    //登录
    void login(Map<String,String> map);
    //注册
    void reg(Map<String,String> map);
    //获取商品列表
    void getGoodsListData(String pscid,String page);
    void getGoodsListFresh(String pscid,String page);
    void getGoodsListLoadMore(String pscid,String page);
    //添加购物车
    void addCart(String uid, String pid);
    //购物车

}

P层 接口

public interface IPresenter {

    //登录
    void loginPresenter(IModel iModel, IView iView);
    //接收参数
    void getLogin(LoginUserBean loginUserBean);
    //接收失败的提示
    void getErrorData(String msg);

    //注册
    void regPresenter(IModel iModel, IRegView iRegView);
    //接收参数
    void getReg(RegBean regBean);
    //接收失败的提示
    void getRegErrorData(String msg);

    //--------------商品列表----------------
    //得到商品列表数据
    //关联M和V层
    void getGoodsList(IModel iModel,IGoodsView iGoodsView);
    void getGoodsListFresh(IModel iModel,IGoodsView iGoodsView);
    void getGoodsListLoadMore(IModel iModel,IGoodsView iGoodsView);
    //展示列表数据
    void getGoodsListData(List<GoodsBean.DataBean> list);
    void getGoodsListFresh(List<GoodsBean.DataBean> list);
    void getGoodsListLoadMore(List<GoodsBean.DataBean> list);
    //错误提示
    void getGoodsListError(String error);
    //-----------添加购物车
    void addCart(IModel iModel, IDetailView iDetailView);

    void addSuccess();

    void addError();
}

V层  接口

public interface IView {
    //登录成功
    void loginSuccess();
    //登录失败
    void loginError(String error);
    //获取手机号
    String getMobile();
    //获取密码
    String getPassword();
}
实体类

public class ModelImp1 implements IModel{
    private static final String TAG = "ModelImp1---";
    //关联p层
    private IPresenter iPresenter;

    public ModelImp1(IPresenter iPresenter) {
        this.iPresenter = iPresenter;
    }

    //登录
    @Override
    public void login(Map<String, String> map) {

        //使用retrofit

        RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();
        MyService myService = retrofitUtils.createRequest(MyService.class);
        myService.loginpost(map)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<LoginUserBean>() {
                    @Override
                    public void onCompleted() {

                        Log.d(TAG, "onCompleted: 完成-----");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError: 异常-----"+e.getMessage());
                        //调用p层的错误提示方法
                        iPresenter.getErrorData(e.getMessage());
                    }

                    @Override
                    public void onNext(LoginUserBean loginUserBean) {
                        //把值传给p层
                        Log.d(TAG, "onNext: "+loginUserBean);

                        //判断
                        if(loginUserBean.getCode().equals("0")){
                            iPresenter.getLogin(loginUserBean);
                        }else{
                            iPresenter.getErrorData("请先注册---");
                        }
                    }
                });


    }

    //注册
    @Override
    public void reg(Map<String, String> map) {
        RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();
        MyService myService = retrofitUtils.createRequest(MyService.class);
        myService.regpost(map)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<RegBean>() {
                    @Override
                    public void onCompleted() {
                        Log.d(TAG, "onCompleted: 注册完成----");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError: 异常---"+e.getMessage());
                        iPresenter.getRegErrorData("注册失败--");
                    }

                    @Override
                    public void onNext(RegBean regBean) {
                        Log.d(TAG, "onNext: "+regBean);
                        //判断
                        if(regBean.getCode().equals("0")){
                            iPresenter.getReg(regBean);
                        }else{
                            iPresenter.getRegErrorData("注册失败");
                        }
                    }
                });

    }

    //----------------商品列表页面------------------
    @Override
    public void getGoodsListData(String pscid, String page) {
        //retrofit网络请求
        RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();
        MyService myService = retrofitUtils.createRequest(MyService.class);
        myService.getGoodsListData(pscid, page)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<GoodsBean>() {
                    @Override
                    public void onCompleted() {
                        Log.d(TAG, "onCompleted: 商品列表完成----");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError: 异常------"+e);

                    }

                    @Override
                    public void onNext(GoodsBean goodsBean) {
                        String code = goodsBean.getCode();
                        Log.d("test",code + "===============");
                        if(code.equals("0")){
                            iPresenter.getGoodsListData(goodsBean.getData());
                        }else{
                            Log.d(TAG, "onNext: "+goodsBean);
                        }

                    }
                });
    }

    @Override
    public void getGoodsListFresh(String pscid, String page) {
        //retrofit网络请求
        RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();
        MyService myService = retrofitUtils.createRequest(MyService.class);
        myService.getGoodsListData(pscid, page)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<GoodsBean>() {
                    @Override
                    public void onCompleted() {
                        Log.d(TAG, "onCompleted: 商品列表完成----");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError: 异常------"+e);

                    }

                    @Override
                    public void onNext(GoodsBean goodsBean) {
                        String code = goodsBean.getCode();
                        if(code.equals("0")){
                            iPresenter.getGoodsListData(goodsBean.getData());
                        }else{
                            Log.d(TAG, "onNext: "+goodsBean);
                        }

                    }
                });
    }

    @Override
    public void getGoodsListLoadMore(String pscid, String page) {
        //retrofit网络请求
        RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();
        MyService myService = retrofitUtils.createRequest(MyService.class);
        myService.getGoodsListData(pscid, page)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<GoodsBean>() {
                    @Override
                    public void onCompleted() {
                        Log.d(TAG, "onCompleted: 商品列表完成----");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError: 异常------"+e);

                    }

                    @Override
                    public void onNext(GoodsBean goodsBean) {
                        String code = goodsBean.getCode();
                        if(code.equals("0")){
                            iPresenter.getGoodsListData(goodsBean.getData());
                        }else{
                            Log.d(TAG, "onNext: "+goodsBean);
                        }

                    }
                });
    }

    //添加购物车
    @Override
    public void addCart(String uid, String pid) {
        RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();
        MyService myService = retrofitUtils.createRequest(MyService.class);
        myService.addCart(uid,pid)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<AddBean>() {
                    @Override
                    public void onCompleted() {
                        Log.d(TAG, "tainjai--- ");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "tainjai失败---: ");
                        iPresenter.addError();
                    }

                    @Override
                    public void onNext(AddBean addBean) {
                        Log.d(TAG, "addBean: "+addBean);
                        if (addBean.getCode().equals("0")){
                            iPresenter.addSuccess();
                        }else {
                            iPresenter.addError();
                        }
                    }
                });
    }

}
P 实体类

public class PresenterImp1 implements IPresenter{
    //关联V层
    private IView iView;
    private IRegView iRegView;
    private IGoodsView iGoodsView;
    private IDetailView iDetailView;
    private static final String TAG = "PresenterImp1===";

    @Override
    public void loginPresenter(IModel iModel, IView iView) {
        this.iView=iView;
        //创建Map集合
        Map<String,String> map=new HashMap<>();
        map.put("mobile",iView.getMobile());
        map.put("password",iView.getPassword());
        //调用M层登录的方法
        iModel.login(map);

    }

    @Override
    public void getLogin(LoginUserBean loginUserBean) {
        iView.loginSuccess();
    }

    @Override
    public void getErrorData(String msg) {
        iView.loginError(msg);
    }

    //----------------注册----------------------
    @Override
    public void regPresenter(IModel iModel, IRegView iRegView) {
        this.iRegView=iRegView;
        Map<String,String> map=new HashMap<>();
        map.put("mobile",iRegView.getMobile());
        map.put("password",iRegView.getPassword());
        iModel.reg(map);
    }

    @Override
    public void getReg(RegBean regBean) {
        iRegView.regSuccess();

    }
    @Override
    public void getRegErrorData(String msg) {
        iRegView.regError(msg);
    }

    //---------------商品列表----------------
    @Override
    public void getGoodsList(IModel iModel, IGoodsView iGoodsView) {
        this.iGoodsView=iGoodsView;
        //调用M层展示数据的方法
        iModel.getGoodsListData("1","1");
    }

    //刷新
    @Override
    public void getGoodsListFresh(IModel iModel, IGoodsView iGoodsView) {
        this.iGoodsView=iGoodsView;
        iModel.getGoodsListFresh("1",iGoodsView.getPage());
    }

    //加载
    @Override
    public void getGoodsListLoadMore(IModel iModel, IGoodsView iGoodsView) {
        this.iGoodsView=iGoodsView;
        iModel.getGoodsListLoadMore("1",iGoodsView.getPage());
    }

    @Override
    public void getGoodsListData(List<GoodsBean.DataBean> list) {
        iGoodsView.showGoodsList(list);
    }
    //获取刷新数据
    @Override
    public void getGoodsListFresh(List<GoodsBean.DataBean> list) {
        iGoodsView.showGoodsListFresh(list);
    }

    //获取加载的数据
    @Override
    public void getGoodsListLoadMore(List<GoodsBean.DataBean> list) {
        iGoodsView.showGoodsListLoadMore(list);
    }

    @Override
    public void getGoodsListError(String error) {
        Log.d(TAG, "getGoodsListError: "+error);
    }

    //添加购物车
    @Override
    public void addCart(IModel iModel, IDetailView iDetailView) {
        this.iDetailView = iDetailView;
        iModel.addCart(iDetailView.getUid(),iDetailView.getPid());
    }

    @Override
    public void addSuccess() {
        iDetailView.addSuccess();

    }

    @Override
    public void addError() {
        iDetailView.addError();
    }

}

V 实体类 MainActivity

package view;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import bawei.com.yuekao2_moni.R;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import model.ModelImp1;
import presenter.PresenterImp1;

public class MainActivity extends AppCompatActivity implements IView {

    @BindView(R.id.mobile)
    EditText mobile;
    @BindView(R.id.password)
    EditText password;
    @BindView(R.id.login)
    Button login;

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

    //登录成功
    @Override
    public void loginSuccess() {
        Toast.makeText(MainActivity.this,"登录成功----",Toast.LENGTH_SHORT).show();
        //跳转到商品列表页面
        Intent intent=new Intent(MainActivity.this,GoodsActivity.class);
        startActivity(intent);
        finish();
    }

    //登录失败
    @Override
    public void loginError(String error) {
        Toast.makeText(MainActivity.this,"登录失败--"+error,Toast.LENGTH_SHORT).show();
        //跳转到注册页面
        Intent intent=new Intent(MainActivity.this,ResActivity.class);
        startActivity(intent);
    }

    //获取用户名
    @Override
    public String getMobile() {
        return mobile.getText().toString();
    }

    //获取密码
    @Override
    public String getPassword() {
        return password.getText().toString();
    }

    @OnClick(R.id.login)
    public void onViewClicked() {
        //调用p层的登录

        PresenterImp1 presenterImp1=new PresenterImp1();
        presenterImp1.loginPresenter(new ModelImp1(presenterImp1),MainActivity.this);

    }
}

注册接口 实体类

package view;

public interface IRegView {
    //注册成功
    void regSuccess();
    //注册失败
    void regError(String error);
    //获取手机号
    String getMobile();
    //获取密码
    String getPassword();
}

ResActivity注册页面

package view;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import bawei.com.yuekao2_moni.R;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import model.ModelImp1;
import presenter.PresenterImp1;

public class ResActivity extends AppCompatActivity implements IRegView {


    @BindView(R.id.mobile)
    EditText mobile;
    @BindView(R.id.password)
    EditText password;
    @BindView(R.id.password2)
    EditText password2;
    @BindView(R.id.email)
    EditText email;
    @BindView(R.id.resgister)
    Button resgister;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_res);
        ButterKnife.bind(this);
    }
    @OnClick(R.id.resgister)
    public void onViewClicked() {
        //调用p层里的注册
        PresenterImp1 presenterImp1=new PresenterImp1();
        presenterImp1.regPresenter(new ModelImp1(presenterImp1),ResActivity.this);

    }

    @Override
    public void regSuccess() {
        Toast.makeText(ResActivity.this,"注册成功--------",Toast.LENGTH_SHORT).show();
        //跳转到商品列表页面
        Intent intent=new Intent(ResActivity.this,GoodsActivity.class);
        startActivity(intent);
    }

    @Override
    public void regError(String error) {
        //吐司注册有误
        Toast.makeText(ResActivity.this,"注册错误---"+error,Toast.LENGTH_SHORT).show();
    }

    @Override
    public String getMobile() {
        return mobile.getText().toString();
    }

    @Override
    public String getPassword() {
        return password.getText().toString();
    }

}

商品列表  接口 IGoodsView

package view;

import java.util.List;

import bean.GoodsBean;
public interface IGoodsView {

    //显示商品
    void showGoodsList(List<GoodsBean.DataBean> list);
    void showGoodsListFresh(List<GoodsBean.DataBean> list);
    void showGoodsListLoadMore(List<GoodsBean.DataBean> list);
    String getPage();//获取页数
}

商品列表页面

package view;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Toast;

import com.jcodecraeer.xrecyclerview.XRecyclerView;

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

import bawei.com.yuekao2_moni.R;
import bean.GoodsBean;
import butterknife.BindView;
import butterknife.ButterKnife;
import model.ModelImp1;
import presenter.PresenterImp1;

public class GoodsActivity extends AppCompatActivity implements IGoodsView {
    @BindView(R.id.goods_xrecycler)
    XRecyclerView goodsXrecyler;
    private long firstTime = 0;
    private static final String TAG = "GoodsActivity-----";
    private PresenterImp1 presenter;
    int page = 1;
    List<GoodsBean.DataBean> list = new ArrayList<>();
    private MyGoodsListAdapter myGoodsListAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_goods);
        ButterKnife.bind(this);
        //初始化界面
        initViews();
        //调用p请求数据

        presenter = new PresenterImp1();
        presenter.getGoodsList(new ModelImp1(presenter), this);

    }

    private void initViews() {
        goodsXrecyler.setLayoutManager(new LinearLayoutManager(this));
        goodsXrecyler.setLoadingMoreEnabled(true);
        goodsXrecyler.setPullRefreshEnabled(true);
        goodsXrecyler.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                page = 1;
                presenter.getGoodsListFresh(new ModelImp1(presenter), GoodsActivity.this);
            }

            @Override
            public void onLoadMore() {
                page++;
                presenter.getGoodsListLoadMore(new ModelImp1(presenter), GoodsActivity.this);
            }
        });


    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            if (System.currentTimeMillis() - firstTime > 2000) {
                Toast.makeText(GoodsActivity.this, "再按一次退出程序--->onKeyDown", Toast.LENGTH_SHORT).show();
                firstTime = System.currentTimeMillis();
            } else {
                finish();
                System.exit(0);
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    //显示商品
    @Override
    public void showGoodsList(List<GoodsBean.DataBean> list) {
        this.list = list;
        Log.d(TAG, "showGoodsList: " + list.size());
        myGoodsListAdapter = new MyGoodsListAdapter(GoodsActivity.this, list);
        goodsXrecyler.setAdapter(myGoodsListAdapter);

        myGoodsListAdapter.setOnMyItemClick(new MyGoodsListAdapter.MyItemClick() {
            @Override
            public void onMyItemClick(View view, int postion, int pscid) {
                GoodsBean.DataBean dataBean = GoodsActivity.this.list.get(postion);

                Intent intent = new Intent(GoodsActivity.this, DetailActivity.class);
                intent.putExtra("goodsbean", dataBean);
                startActivity(intent);
            }
        });

    }

    //刷新
    @Override
    public void showGoodsListFresh(List<GoodsBean.DataBean> list) {
        this.list = list;
        Log.d(TAG, "showGoodsListFresh: " + list);
        myGoodsListAdapter = new MyGoodsListAdapter(GoodsActivity.this, list);
        goodsXrecyler.setAdapter(myGoodsListAdapter);
        goodsXrecyler.refreshComplete();
    }

    //更多
    @Override
    public void showGoodsListLoadMore(List<GoodsBean.DataBean> list) {
        Log.d(TAG, "showGoodsListLoadMore: " + list);
        this.list.addAll(list);

        myGoodsListAdapter.notifyDataSetChanged();

        goodsXrecyler.loadMoreComplete();
    }

    @Override
    public String getPage() {
        return page + "";
    }
}

商品列表适配器  

package view;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

import bawei.com.yuekao2_moni.R;
import bean.GoodsBean;

public class MyGoodsListAdapter extends RecyclerView.Adapter<MyGoodsListAdapter.MyViewHolder> {

    private final Context context;
    private final List<GoodsBean.DataBean> list;
    private MyItemClick myItemClick;

    public MyGoodsListAdapter(Context context, List<GoodsBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = View.inflate(context, R.layout.goods_item_layout, null);
        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        String picurl = list.get(position).getImages().split("\\|")[0];
        holder.getSimpleDraweeView().setImageURI(picurl);
        holder.getTextView().setText(list.get(position).getTitle());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myItemClick.onMyItemClick(v, position,list.get(position).getPscid());
            }
        });

    }

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

    class MyViewHolder extends RecyclerView.ViewHolder {

        private SimpleDraweeView simpleDraweeView;
        private TextView textView;

        public MyViewHolder(View itemView) {
            super(itemView);
            simpleDraweeView = itemView.findViewById(R.id.goods_pic);
            textView = itemView.findViewById(R.id.goods_title);
        }

        public SimpleDraweeView getSimpleDraweeView() {
            return simpleDraweeView;
        }

        public void setSimpleDraweeView(SimpleDraweeView simpleDraweeView) {
            this.simpleDraweeView = simpleDraweeView;
        }

        public TextView getTextView() {
            return textView;
        }

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

    public interface MyItemClick {
        void onMyItemClick(View view, int postion, int pscid);
    }

    public void setOnMyItemClick(MyItemClick myItemClick) {
        this.myItemClick = myItemClick;
    }

商品详情接口 IDetailView
package view;

public interface IDetailView {
    String getUid();

    String getPid();
    void addSuccess();

    void addError();
}
详情主页
package view;

import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.facebook.drawee.view.SimpleDraweeView;

import bawei.com.yuekao2_moni.R;
import bean.GoodsBean;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import model.ModelImp1;
import presenter.PresenterImp1;

public class DetailActivity extends AppCompatActivity implements IDetailView {

    @BindView(R.id.detail_pic)
    SimpleDraweeView detailPic;
    @BindView(R.id.detail_title)
    TextView detailTitle;
    @BindView(R.id.detail_price)
    TextView detailPrice;
    @BindView(R.id.detail_jump)
    TextView detailJump;
    @BindView(R.id.detail_add)
    TextView detailAdd;
    private GoodsBean.DataBean dataBean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        ButterKnife.bind(this);
        //获取数据
        getDatas();

    }

    private void getDatas() {
        Intent intent = getIntent();
        dataBean = (GoodsBean.DataBean) intent.getSerializableExtra("goodsbean");

        String s = dataBean.getImages().split("\\|")[0];
        detailPic.setImageURI(s);

        detailTitle.setText(dataBean.getTitle());
        detailPrice.setText(dataBean.getBargainPrice() + "");
        detailPrice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
    }

    @Override
    public String getUid() {
        return "71";
    }

    @Override
    public String getPid() {
        return dataBean.getPid() + "";
    }

    //添加成功
    @Override
    public void addSuccess() {
        Toast.makeText(DetailActivity.this, "成功--", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void addError() {
        Toast.makeText(DetailActivity.this, "失败--", Toast.LENGTH_SHORT).show();
    }

    @OnClick({R.id.detail_jump, R.id.detail_add})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.detail_jump:
                startActivity(new Intent(DetailActivity.this, CartActivity.class));
                break;
            case R.id.detail_add:
                //添加
                PresenterImp1 presenter = new PresenterImp1();
                presenter.addCart(new ModelImp1(presenter), this);
                break;
        }
    }
}

以下就是需要的bean类数据

//登录数据

package bean;

public class LoginUserBean {

    /**
     * msg : 登录成功
     * code : 0
     * data : {"age":null,"appkey":"2b402f5d8b5bc36f","appsecret":"522983C699C5C9368C839BBD69C5A69D","createtime":"2018-04-04T14:30:07","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"15701574650","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"E38FA65D6C2F09B0B1EAD58CB7BE04CF","uid":10259,"userId":null,"username":"15701574650"}
     */

    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 : 2b402f5d8b5bc36f
         * appsecret : 522983C699C5C9368C839BBD69C5A69D
         * createtime : 2018-04-04T14:30:07
         * email : null
         * fans : null
         * follow : null
         * gender : null
         * icon : null
         * latitude : null
         * longitude : null
         * mobile : 15701574650
         * money : null
         * nickname : null
         * password : 8F669074CAF5513351A2DE5CC22AC04C
         * praiseNum : null
         * token : E38FA65D6C2F09B0B1EAD58CB7BE04CF
         * uid : 10259
         * userId : null
         * username : 15701574650
         */

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

//获取用户名和密码的bean类

package bean;

public class User {
    private String mobile;
    private String password;

    public String getMobile() {
        return mobile;
    }

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

    public String getPassword() {
        return password;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "mobile='" + mobile + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

//注册数据

package bean;

public class RegBean {

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

//商品数据

package bean;

import java.io.Serializable;
import java.util.List;

public class GoodsBean {

    /**
     * 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 implements Serializable{
        /**
         * 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手机
         */

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

//添加的数据

package bean;
public class AddBean {

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

   以下就是布局了--------------

 ------------登录布局-----------

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="view.MainActivity"
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录页面"
        android:gravity="center"
        />
    <EditText
        android:id="@+id/mobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入手机号"
        android:layout_marginTop="20sp"
        />
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20sp"
        android:hint="请输入密码"
        />
    <Button
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20sp"
        android:text="登录"
        />

</LinearLayout>

-------------注册页面---------------------

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="view.ResActivity"
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册页面"
        android:gravity="center"
        />
    <EditText
        android:id="@+id/mobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入手机号"
        android:layout_marginTop="20sp"
        />
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20sp"
        android:hint="请输入密码"
        />
    <EditText
        android:id="@+id/password2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20sp"
        android:hint="请确认密码"
        />
    <EditText
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20sp"
        android:hint="请输入邮箱"
        />
    <Button
        android:id="@+id/resgister"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20sp"
        android:text="注册"
        />

</LinearLayout>
--------------商品布局----------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_goods"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="view.GoodsActivity">

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/goods_xrecycler"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>
//展示的条目布局 goods_item_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.facebook.drawee.view.SimpleDraweeView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:id="@+id/goods_pic"
        />
    <TextView
        android:id="@+id/goods_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="标题"
        android:textSize="24sp"
        android:textColor="#000"
        />
</LinearLayout>
--------详情的布局--------------

<?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="view.DetailActivity"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">

        <com.facebook.drawee.view.SimpleDraweeView
            android:id="@+id/detail_pic"
            android:layout_width="match_parent"
            android:layout_height="200dp" />

        <TextView
            android:id="@+id/detail_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="标题"
            android:textSize="30sp" />

        <TextView
            android:id="@+id/detail_price"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="价格"
            android:textColor="@android:color/holo_red_light"
            android:textSize="20sp" />
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/detail_jump"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="购物车"
            android:textSize="25sp" />

        <TextView
            android:id="@+id/detail_add"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="添加购物车"
            android:textSize="25sp" />
    </LinearLayout>


</LinearLayout>



评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值