80945540 / LCRapidDevelop

android快速开发框架--快速实现 异常奔溃统一管理 页面 加载中 加载失败 无数据等状态以及下拉刷新和自动加载
599 stars 149 forks source link

请教下楼主 #3

Open SomnusWu opened 7 years ago

SomnusWu commented 7 years ago

楼主大大 我用的是RxJava2.0 RxAndroid2 .0

compile 'io.reactivex.rxjava2:rxandroid:2.0.0' compile 'io.reactivex.rxjava2:rxjava:2.0.0'

BookListModel.java改为

 public void LoadData(String type, int pageIndex, final OnLoadDataListListener listener) {
        HttpRequest.getInstance().HttpDataToSchoolList(type, pageIndex, new Observer<List<BookListDto>>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(List<BookListDto> value) {
                listener.onSuccess(value);
            }

            @Override
            public void onError(Throwable e) {
                //设置页面为加载错误
                listener.onFailure(e);
            }

            @Override
            public void onComplete() {

            }
        });
    }
//请求列表数据
    public void HttpDataToSchoolList(String type, int pageIndex, Observer<List<BookListDto>> observer) {
        Observable observable = service.getBookList(type, pageIndex).map(new HttpResultFunc<List<BookListDto>>());
        setSubscribe(observable, observer);
    }

然后把Fun1改为了

 private class HttpResultFunc<T> implements Function<HttpResultBase<T>, T> {
        @Override
        public T apply(HttpResultBase<T> tHttpResultBase) throws Exception {
            if (tHttpResultBase.getCode() != 1) {
                throw new ApiException(tHttpResultBase);
            }
            return tHttpResultBase.getData();
        }
    }

就报了如下错误: Caused by: java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex.Observable<com.somnus.androidhttpdemo.ui.entity.HttpResultBase<java.util.List<com.somnus.androidhttpdemo.ui.entity.BookListDto>>> for method HttpServiceApi.getBookList

问下大大该怎么修改啊 。ths

alouanemed commented 7 years ago

Add this to your app gradle : compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'

Update your retrofit builder :

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example.com")
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    .build();
SomnusWu commented 7 years ago

thanks

SomnusWu commented 7 years ago

@alouanemed but , Still not running . url : https://github.com/SomnusWu/AndroidHttpDemo.git

alouanemed commented 7 years ago

Update this :

https://github.com/SomnusWu/AndroidHttpDemo/blob/master/app/src/main/java/com/somnus/androidhttpdemo/http/retrofit/RetrofitUtils.java#L38

With this :

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())