网络请求中retrofit和Rxjava ,Rxndroid的结合使用会使得我们的网络请求的代码更加的流畅,下面介绍一下 他们的应用。首先要在app的目录build.gradle中引入第三方的依赖
//Retrofit compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
//RxJava compile 'io.reactivex:rxjava:1.1.5' compile 'io.reactivex:rxandroid:1.2.0'资源包引入之后那么我们开始把一些核心的代码贴出来
1.Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://perapi.svipmovie.com") .client(new OkHttpClient().newBuilder().build()) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build();首先我们设置retrofit和Gson,还有RxJavaCallAdapter,这样就成功了绑定了 gson 和 RxJava
2.
ServeceiApi serveceiApi = retrofit.create(ServeceiApi.class); serveceiApi.getHomePage() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<HomePage>() { @Override public void onCompleted() { Toast.makeText(MainActivity.this, homePage.toString() + "sdfssdf", Toast.LENGTH_LONG).show(); String homeBacPic = homePage.getData().getHomeBacPic(); tv_rceycl.setAdapter(new Myadpter(MainActivity.this, homePage)); // tv_rceycl.setLayoutManager(new LinearLayoutManager(MainActivity.this)); tv_rceycl.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false)); } @Override public void onError(Throwable e) { Toast.makeText(MainActivity.this, "失败" + e.toString(), Toast.LENGTH_LONG).show(); } @Override public void onNext(HomePage homePage) { MainActivity.this.homePage = homePage; } });上面注意到有一个类,这个类就是写我们的具体的接口的类,
public interface ServeceiApi { @GET("/from/headPageApi/headPage.do") Observable<HomePage> getHomePage(); }好了,核心的代码就这些。
具体的代码已经提交到了github;
https://github.com/itwatch/Retrofit-recyclerview