MVPArms Retrofit RxJava实现注册

1.生成MVPArms 和Activity

在这里插入图片描述
2.在清单文件中添加一下代码

<activity android:name=".mvp.ui.activity.LoginActivityActivity">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

3.在Api中传入跟接口

public interface Api {
String APP_DOMAIN = "http://mobile.bwstudent.com/";
}

4.在Service文件夹中创建ServiceApi子接口

public interface ServiceApi {
//必须写
@FormUrlEncoded //必须写
@POST("small/user/v1/login")
Observable<ResponseBody> requestLoginInfo(@Field("phone") String userName,@Field("pwd") String pwd);
@GET("small/commodity/v1/commodityList")
Observable<ResponseBody> requestGoodsInfo();

@FormUrlEncoded //必须写
@POST("small/user/v1/register")
Observable<RequestBody> requestRegistInfo(@Field("phone") String userName,@Field("pwd") String pwd);
}

5.在contract的接口中添加方法

public interface LoginActivityContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
    void showData(String string);

    void showGoodsData(String string);

    void showRegistData(String s);
}

//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
    io.reactivex.Observable<ResponseBody> requestLoginInfo(String userName, String pwd);
    Observable<ResponseBody> requestGoodsInfo();
    io.reactivex.Observable<RequestBody> requestRegistInfo(String userName, String pwd);
}
}

6.在Activity中继承V层接口

@Override
public void showData(String string) {
    Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
}

@Override
public void showGoodsData(String string) {
    Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
}

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


@OnClick({R.id.btn_login, R.id.btn_requestHomePageData})
public void onViewClicked(View view) {
    switch (view.getId()) {
        case R.id.btn_login:
            String userName = etUserName.getText().toString();
            String pwd = etPassword.getText().toString();
            mPresenter.requestLoginData(userName, pwd);
            break;
        case R.id.btn_requestHomePageData:
            mPresenter.requestGoodsData();
            break;
    }
}


@OnClick(R.id.btn_regist)
public void onViewClicked() {
    String userName = etUserName.getText().toString();
    String pwd = etPassword.getText().toString();
    mPresenter.requestRegistData(userName,pwd);
}
}

7.P层创建方法 向M层传数去 向V层回传数据

public void requestLoginData(String userName, String pwd){
Observable<ResponseBody> observable = mModel.requestLoginInfo(userName, pwd);
observable.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer<ResponseBody>() {
            @Override
            public void accept(ResponseBody responseBody) throws Exception {
                mRootView.showData(responseBody.string());
            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(Throwable throwable) throws Exception {
                String errorMessage = throwable.getMessage().toString();
                mRootView.showData(errorMessage);
            }
        });
}
public void requestGoodsData(){
Observable<ResponseBody> observable = mModel.requestGoodsInfo();
observable.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer<ResponseBody>() {
            @Override
            public void accept(ResponseBody responseBody) throws Exception {
                mRootView.showGoodsData(responseBody.string());
            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(Throwable throwable) throws Exception {
                mRootView.showGoodsData(throwable.getMessage().toString());
            }
        });
}
public void  requestRegistData(String userName, String pwd){
Observable<RequestBody> observable = mModel.requestRegistInfo(userName,pwd);
observable.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer<RequestBody>() {
            @Override
            public void accept(RequestBody requestBody) throws Exception {
                mRootView.showRegistData(requestBody.toString());
            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(Throwable throwable) throws Exception {
                mRootView.showRegistData(throwable.getMessage().toString());
            }
        });

}

8.在M层处理

@Override
public io.reactivex.Observable<ResponseBody> requestLoginInfo(String userName, String pwd) {
    //return mRepositoryManager.obtainRetrofitService(ServiceApi.class).requestLoginInfo(userName, pwd);
    return mRepositoryManager.obtainRetrofitService(ServiceApi.class).requestLoginInfo(userName,pwd);
}

@Override
public Observable<ResponseBody> requestGoodsInfo() {
    return mRepositoryManager.obtainRetrofitService(ServiceApi.class).requestGoodsInfo();
}

@Override
public Observable<RequestBody> requestRegistInfo(String userName, String pwd) {
    return mRepositoryManager.obtainRetrofitService(ServiceApi.class).requestRegistInfo(userName, pwd);
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值