我正在尝试使用retrofit and rxJava
调用API。使用RxJava 1
时,以下代码似乎运行良好,但一旦我更新为RxJava 2
,我就会收到此错误:
错误:
不存在类型变量R的实例,以便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();
}
}
修改:
导入rx.Observable
而不是io.reactivex.Observable
时代码运行正常。
谢谢
答案 0 :(得分:3)
这种情况正在发生,因为rxjava2已迁移到他们自己的functional interfaces,因此您需要实现不同的接口而不是Func1
。
不要忘记将您的改装适配器更新为rxjava2版本:
compile 'com.squareup.retrofit2:adapter-rxjava2:latest.version'