2017-02-23 3 views
0

Retrofitを使用してObservableを取得しようとしています。私は私のMainActivityでエラーになってる場所ですAqicnApi.getHerePollutionObservableDagger + Retrofit + RxJavaでアダプターエラーを作成します。

方法のためrx.Observableのコールアダプタを作成することができません:

Observable<Aqicn> aqicnObservable = aqicnApi.getHerePollutionObservable(getResources().getString(R.string.aqicn_token)); 
私はこのエラーを取得しています

これは私のAqicnApiインタフェースです:

public interface AqicnApi { 
    @GET("feed/here/") 
    Call<Aqicn> getHerePollution(@Query("token") String token); // Query token parameter needed for API auth 

    @GET("feed/here/") 
    Observable<Aqicn> getHerePollutionObservable(@Query("token") String token); // Query token parameter needed for API auth 
} 

私は私のデータは、これを使用してAqicnしていないObservable<Aqicn>を返す取得しようとした場合、それは完璧に動作します:

Call<Aqicn> call = aqicnApi.getHerePollution(getResources().getString(R.string.aqicn_token)); 

これは、レトロフィットプロバイダ私は忘れてしまった何

@Module 
public class ApiModule { 
    private String baseUrl; 

    public ApiModule(String baseUrl) { 
     if(baseUrl.trim() == "") { 
      throw new IllegalArgumentException("API URL not valid"); 
     } 
     this.baseUrl = baseUrl; 
    } 

    // Logging 
    @Provides 
    public OkHttpClient provideClient() { 
     ... 
    } 

    //Retrofit 
    @Provides 
    public Retrofit provideRetrofit(String baseURL, OkHttpClient client) { 
     return new Retrofit.Builder() 
       .baseUrl(baseURL) 
       .client(client) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 
    } 

    /** 
    * Gets an instance of our Retrofit object calling the above methods then, using this Retrofit 
    * object it creates an instance of AqicnApi interface by calling the create() method. 
    * @return 
    */ 
    @Provides 
    public AqicnApi provideApiService() { 
     return provideRetrofit(baseUrl, provideClient()).create(AqicnApi.class); 
    } 
} 

と私のApiModuleクラスですか?

答えて

1

RxサポートRetrofitは、追加する必要のあるプラグインです。デフォルトではありません。

はあなたのbuild.gradleでプロジェクトにこのライブラリを追加します。

compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' 

RetrofitビルダーにRxアダプタファクトリを提供します。

@Provides 
public Retrofit provideRetrofit(String baseURL, OkHttpClient client) { 
    return new Retrofit.Builder() 
      .baseUrl(baseURL) 
      .client(client) 
      .addConverterFactory(GsonConverterFactory.create()) 
      //You must provide Rx adapter factory to Retrofit 
      .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
      .build(); 
} 
+0

そうだね......ありがとうございましたあなたの助け。 – Laurent

関連する問題