错误显示:无法为io.reactivex.Observable <pojo>创建调用适配器

时间:2017-04-13 13:07:37

标签: android adapter retrofit2 rx-java2

我正在使用retrofit2和rxjava2。

我在我的gradle中使用了大部分最新的库,我尝试了许多创建适配器的方法。

我还创建了一些自定义适配器,但似乎没有任何工作

服务:

    public static Retrofit getClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder().baseUrl(AppConstants.BASE_URL)

                    .addConverterFactory(GsonConverterFactory.create()).
                            addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();

        }
        return  retrofit;
    }

fragment code:
          ApiInterface apiInterface 
    =ApiClient.getClient().create(ApiInterface.class);
        apiInterface.getCategoryVideos(AppConstants.API_KEY)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())

                .subscribe(new Observer<Video>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Video value) {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

我尝试了很多适配器,但没有适配器工作。我是 日志输出是: Log Output

感谢任何建议或解决方案。 我也尝试过此链接stackoverflow solution

中的解决方案

1 个答案:

答案 0 :(得分:0)

尝试更改创建客户端

public class MyClient {

private static MyClient instance;
private ApiInterface apiInterface;

private MyClient() {

    final Retrofit retrofit = new Retrofit.Builder().baseUrl(AppConstants.BASE_URL)
                                                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                                                    .addConverterFactory(GsonConverterFactory.create(gson))
                                                    .build();
    gitHubService = retrofit.create(ApiInterface.class);
}

public static MyClient getInstance() {
    if (instance == null) {
        instance = new MyClient();
    }
    return instance;
}


}

和片段代码

private Subscription subscription;

...

subscription = MyClient.getInstance().getCategoryVideos(AppConstants.API_KEY)
                               .subscribeOn(Schedulers.io())
                               .observeOn(AndroidSchedulers.mainThread())
                               .subscribe(new Observer<Video>() {
                                   @Override public void onCompleted() {
                                       Log.d(TAG, "In onCompleted()");
                                   }

                                   @Override public void onError(Throwable e) {
                                       e.printStackTrace();
                                       Log.d(TAG, "In onError()");
                                   }

                                   @Override public void onNext(Video value) {
                                       Log.d(TAG, "In onNext()");

                                   }
                               });