Android技术知识Android知识Android开发经验谈

Rxjava2+Retrofit2结合mvp的简单教程Rxjav

2017-08-02  本文已影响334人  MrAllRight_Liu

开始讲之前,先推荐大牛的文章让大家去了解一下rxjava

好了,现在我们开始本篇文章

    compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'//retrofit适配器,注意是adapter-rxjava2,如果使用的是rxjava,请使用adapter-rxjava
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'//rxandroid,注意是切换到主线程使用的
    compile 'io.reactivex.rxjava2:rxjava:2.1.2'
 Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())//添加gson转换器
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//添加rxjava2适配器
                .build();
public interface RetrofitService {
    @FormUrlEncoded
    @POST("app/gift/gift_list/")
    Observable<ResponseBody> getGameList(@FieldMap Map<String, String> map);
}
public class RxjavaSimpleUseActivity extends AppCompatActivity {
    private TextView tvResult;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.retrofit);//布局和retrofit一样,使用textview显示结果
        tvResult = (TextView) findViewById(R.id.tv_result);
        //POST请求和上篇一样,创建请求体
        final Map<String, String> map = new HashMap<String, String>();
        map.put("page", "1");
        map.put("code", "news");
        map.put("pageSize", "20");
        map.put("parentid", "0");
        map.put("type", "1");
        HttpCenter.getInstance().service.getGameList(map)
                .subscribeOn(Schedulers.io())//指定网络请求在io线程
                .observeOn(AndroidSchedulers.mainThread())//指定返回结果处理在主线程,这样我们就可以在onnext中更新ui了
                .subscribe(new Observer<ResponseBody>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {

                    }

                    @Override
                    public void onNext(@NonNull ResponseBody responseBody) {
                        try {
                            tvResult.setText(responseBody.string());
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }
}

至此运行程序,你就能在屏幕上看到返回结果了,是的就是这么简单。下一篇我们会对rxjava进行封装,希望不熟悉rxjava的小伙伴,认真看一下大神的文章。
本篇代码已经上传:https://github.com/MrAllRight/HttpExample

上一篇 下一篇

猜你喜欢

热点阅读