我想通过改造连接到服务器,当我使用调用并且一切都很好时 rxjava.it 工作,但是当尝试使用rxjava时,它会遇到麻烦。错误文本:
找不到 io.reactivex.Single 的呼叫适配器
在build.gradle中,我实现了改造适配器,但我不知道问题是什么。这是我的毕业生:
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
API 客户端代码:
public class ApiClient {
public static final String BASE_URL="http://192.168.1.100/digikala/";
private static Retrofit retrofit=null;
public static Retrofit getClient(){
if(retrofit==null){
retrofit=new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(BASE_URL)
.build();
}
return retrofit;
}
API 服务代码:
public interface ApiService {
@GET("readamazing.php")
Single<List<Product>> getSingleProducts();
}
主要活动代码:
ApiService apiService=ApiClient.getClient().create(ApiService.class);
apiService.getSingleProducts().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<List<Product>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<Product> products) {
Log.i("LOG", "onSuccess: "+products.toString());
}
@Override
public void onError(Throwable e) {
Log.i("LOG", "onSuccess: "+e.toString());
}
});
使用 RxJava2CallAdapterFactory
而不是 RxJavaCallAdapterFactory
,因为使用了RxJava2
。
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
到Retrofit.Builder()
.