1,在清单文件里面配置
compile 'com.google.code.gson:gson:2.3' compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' compile 'com.squareup.okhttp:okhttp:2.6.0'
compile 'io.reactivex:rxjava:1.1.0' compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
provided 'org.glassfish:javax.annotation:10.0-b28'
2,定义一个Service类
public class CallService { public static final HttpService service; static { Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() .registerTypeAdapter(Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG) .registerTypeAdapter(Date.class, new DateDeserializer()).setDateFormat(DateFormat.LONG) .create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Consts.BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) /** * 设置回调库,采用Rxjava */ .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); service = retrofit.create(HttpService.class); } }
3,观察者模式
CallService.service.listPlayGuideByObservable(i++, MapUtils.getValueMap(playGuide))
//被观察者执行io接口
.subscribeOn(Schedulers.io())
/*被观察者的回调函数。对于数据再次封装。在时间转换的时候用
.doOnNext(new Action1<Page<PlayGuide>>() {
@Override
public void call(Page<PlayGuide> playGuidePage) {
int j = 0;
for (PlayGuide playGuide : playGuidePage.getContent()) {
Log.d(TAG, "playGuide" + j++);
//Dao.save(playGuide);
}
}
})*/
//观察者在主线程运行
.observeOn(AndroidSchedulers.mainThread())
//执行观察者
.subscribe(new Observer<Page<PlayGuide>>() {
@Override
public void onCompleted() {
initAdapter();
stopRefresh();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Page<PlayGuide> playGuidePage) {
playGuides = playGuidePage.getContent();
playGuides.addAll(playGuides);
}
});
}
4,定义一个
HttpService接口。@GET("/bike/playGuide/listPlayGuide?sort=baiduPage,Asc&sort=id,Asc") Observable<Page<PlayGuide>> listPlayGuideByObservable(@Query("page") Integer page, @QueryMap Map<String, Object> playGuideMap);