2016-12-06 3 views
3

Я пытаюсь позвонить в API с помощью retrofit and rxJava. Приведенный ниже код, кажется, хорошо работает при использовании RxJava 1, но когда я обновлен до RxJava 2 Я получаю эту ошибку:«Нет экземпляра переменной типа R существует, так что Observable соответствует Observable» Ошибка при обновлении до RxJava2

Ошибка:

No Instance of type variable R exist so that Observable conforms to Observable

Api запрос

Observable<HttpResult<List<Article>>> getList(@Query("key")String key); 

Api сделано здесь, и вот где я получаю эту ошибку внутри .map оператор

Observable cache=providers.getList().map(new HttpRsltFunc<List<Article>>()); 

Результат модель Класс:

private class HttpRsltFunc<T> implements Func1<HttpResult<T>, T> { 
     @Override 
     public T call(HttpResult<T> httpResult) { 
      return httpResult.getData(); 
     } 
    } 

Edit:

rx.Observable При импорте вместо io.reactivex.Observable код работает просто отлично.

Спасибо

+0

Может определить его как '<Список наблюдаемых

+0

пытался что, тот же вопрос:/ –

+0

Благодарим Вас за добавление Редактировать , Это также устранило мою проблему. –

ответ

3

Это происходит потому, что rxjava2 мигрировали в свои собственные functional interfaces, так что вам нужно реализовать другой интерфейс вместо Func1.

И не забудьте обновить адаптер модифицированную для rxjava2 версии: compile 'com.squareup.retrofit2:adapter-rxjava2:latest.version'

+0

Да, это была проблема и тот факт, что я не использовал соответствующий RxCache для работы с новыми RxJava.Thanks. –