Retrofit+RxJava的联合使用

来源:互联网 发布:sketch软件 编辑:程序博客网 时间:2024/06/05 20:53

接口

public interface Api {    /**     * http://www.waqu.com     * /v4/user/subscribedItems2.json?     * platform=and&appName=general_video&     * sid=861945036834301&profile=general_child     * &partner=21160138&appVersion=3.9.2&brand=Xiaomi&model=MI+5&osVersion=24&size=10     */    @GET("/v4/user/subscribedItems2.json?\n" +                    "platform=and&appName=general_video&\n" +                    "sid=861945036834301&profile=general_child\n" +                    "&partner=21160138&appVersion=3.9.2&brand=Xiaomi&model=MI+5&osVersion=24")    Observable<Fragmentone_Data> getString(@Query("size") int size);    @GET("/v4/user/qudanSubscribed.json?\n" +            "platform=and&appName=general_video&sid=861945036834301\n" +            "&profile=general_child&partner=21160138&appVersion=3.9.2\n" +            "&brand=Xiaomi&model=MI+5&osVersion=24&start=0&recommType=recomm")    Observable<FragmentTwo_Data> geStringTwo(@Query("size") int size);    @GET("/v4/user/trends.json?platform=\n" +            "and&appName=general_video&sid=861945036834301\n" +            "&profile=general_child&partner=21160138&appVersion=3.9.2\n" +            "&brand=Xiaomi&model=MI+5&osVersion=24&start=0")    Observable<FragmentThree_Data>  getStringThree(@Query("size") int size);}

Retrofit和RxJava一起使用:

  private void initdata() {        Retrofit retrofit=new Retrofit.Builder()                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())                .baseUrl(HttpParams.HTTP_HOST)                .build();        Api api=retrofit.create(Api.class);        Observable<Fragmentone_Data>  observable=api.getString(size);        observable.subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(this, new Consumer<Throwable>() {                    @Override                    public void accept(@NonNull Throwable throwable) throws Exception {                        Log.e("flag", "--------------------->accept: 数据请求失败");                    }                });    }    @Override    public void accept(@NonNull Fragmentone_Data fragmentone_data) throws Exception {        line_bottom.setVisibility(View.GONE);            if(fragmentone_data!=null){                for (int i = 0; i <fragmentone_data.getData().size() ; i++) {                   data.add(fragmentone_data.getData().get(i));                }                adapter.notifyDataSetChanged();            }    }

或者这样 .subscribe(this, new Consumer() {}方法中不用this这个参数.然后就不重写失败的方法:

private void initData(final State state) {        Api.getApiService().getItem()                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Consumer<Tuijian>() {                    @Override                    public void accept(@NonNull final Tuijian tuijian) throws Exception {                        //TODO这里面是得到的数据的处理......                    }                });    }
原创粉丝点击