美文网首页
RXJava+Retrofit+Mvp搭建

RXJava+Retrofit+Mvp搭建

作者: 轻舟_TG | 来源:发表于2019-02-25 17:19 被阅读0次
导入依赖
    implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'

    // Okhttp库
    implementation 'com.squareup.okhttp3:okhttp:3.1.2'
    // Retrofit库
    implementation 'com.squareup.retrofit2:retrofit:2.0.2'
    implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
定义一个解析的bean对象
public class TestBean {
    private int errno;
    private String errmsg;
    private data data;

    public int getErrno() {
        return errno;
    }

    public void setErrno(int errno) {
        this.errno = errno;
    }

    public String getErrmsg() {
        return errmsg;
    }

    public void setErrmsg(String errmsg) {
        this.errmsg = errmsg;
    }

    public TestBean.data getData() {
        return data;
    }

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

    public class data{
        String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
定义一个接口类,用来设置网络请求方式Get/Post,请求接口,实体类,请求参数。
public interface TestService {
    @POST("sign_machine/index/device_identity")
    Observable<TestBean> getData(@Query("device_uid") String device_uid);
}
定义一个Mvp中的model类
/**
 * Created by Administrator on 2019/2/21.
 * Retrofit + RXJava
 */

public class BaseModel {
    public TestService getTestService() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(API.BASE_URL)//基础URL 建议以 / 结尾
                .addConverterFactory(GsonConverterFactory.create())//设置 Json 转换器
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();

        TestService service = retrofit.create(TestService.class);

        return service;
    }
}
定义一个Mvp中的presenter类,在类里面定义回调接口,回调数据给View层(包含Activity和xml布局)
public class MainPresenter {
    private MainCallBack callBack;
    private BaseModel model;

    public MainPresenter(MainCallBack callBack) {
        this.callBack = callBack;
        model=new BaseModel();
    }

    public void getNetData(){
        model.getTestService().getData("请求参数")
                .subscribeOn(Schedulers.io())//IO线程加载数据
                .observeOn(AndroidSchedulers.mainThread())//主线程显示数据
                .subscribe(new Observer<TestBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(TestBean testBean) {
                        callBack.getMessage(testBean);
                    }

                    @Override
                    public void onError(Throwable e) {
                        callBack.error();
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }


    public interface MainCallBack {

        void getMessage(TestBean testBean);
        void error();

    }

}
测试
public class MainActivity extends AppCompatActivity implements MainPresenter.MainCallBack {

    Button button;

    private MainPresenter mainPresenter;

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


        mainPresenter = new MainPresenter(this);


        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mainPresenter.getNetData();
            }
        });

    }

    @Override
    public void getMessage(TestBean testBean) {
        Toast.makeText(MainActivity.this, testBean.getData().getName(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void error() {
        Toast.makeText(MainActivity.this, "获取数据失败", Toast.LENGTH_SHORT).show();
    }
}

相关文章

  • RXJava+Retrofit+Mvp搭建

    导入依赖 定义一个解析的bean对象 定义一个接口类,用来设置网络请求方式Get/Post,请求接口,实体类,请求...

  • 安卓必读 - 收藏集 - 掘金

    Rxjava+Retrofit+MVP MD 风格 的阅读类 APP - Android - 掘金HiReader...

  • rxjava+retrofit+mvp

    有一段时间没有更新文章了,最近都在忙公司的项目偶尔闲下来也是针对之前的框架补一些七七八八的功能。包括一些第三方的以...

  • 个人app(ebay)

    安卓端,使用rxjava+retrofit+mvp为基本框架:java混合kotlin进行开发(大部分为kotli...

  • android 开发框架整合(Rxjava+Retrofit二次

    前言: 我们知道rxjava+retrofit+mvp已经出现很久了。由于最近项目需要大整改,故此封装一个比较适用...

  • 个人app(decompression)

    安卓端,使用rxjava+retrofit+mvp为基本框架: 功能: 1用户登录,修改信息 2发布图片动态,文字...

  • Rxjava2+Retrofit的完美封装

    要说2016年最火的Android技术是什么,毫无疑问肯定是RxJava+Retrofit+Mvp。现如今2017...

  • Rxjava+retrofit+mvp整合

    最近在看Rxjava,写了一个简单的 demo整合了Rxjava +retrofit+mvp,写完了迫不及待的分享...

  • RXJava+Retrofit+MVP的简单封装

    RXJava+Retrofit+MVP的简单封装 马上就要过年了,躁动的心早已按耐不住,还是写上一篇文章来冷静下。...

  • RxJava+Retrofit+MVP封装(一)

    前言 在去年最火的无疑是RxJava+Retrofit这对组合了,出去说自己不会都不好意思,在去年的时候就看过Rx...

网友评论

      本文标题:RXJava+Retrofit+Mvp搭建

      本文链接:https://www.haomeiwen.com/subject/fomgyqtx.html