Android的RxJava错误的返回类型认购

问题描述 投票:-1回答:2

我刚开始用RxJava和RxAndroid并通过this basic example在工作。我在使用,我订阅了观察到的是这个代码的最后部分的麻烦。

subscription = GithubClient.getInstance()
            .getStarredRepositories(userName)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<List<GithubRepo>>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(List<GithubRepo> githubRepos) {
                    githubRepoAdapter.setGithubRepos(githubRepos);
                }
            });

我不知道该教程是过时的,或者如果我做错了。我想这可能是因为我进口我是错的,但我已经试过所有,没有工作。以下是此代码进口。

import io.reactivex.android.schedulers.AndroidSchedulers;
import rx.Observer;
import rx.Subscription;
import rx.schedulers.Schedulers;

我也尝试这些:

import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import rx.Subscription;

但随后的观察者必须实现不同的方法:

    subscription = GithubClient.getInstance()
            .getStarredRepositories(userName)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<List<GithubRepo>>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(List<GithubRepo> githubRepos) {
                    githubRepoAdapter.setGithubRepos(githubRepos);
                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });

有了这个代码,我得到的错误Required: rx.Subscription, Found: void

相关的依存关系:

implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.5.0'
android rx-java rx-java2 rx-android
2个回答
1
投票

当涉及到比如你的链接RxJava-1使用。但是,在您的进口RxJava-2是进口=)

在第二RX订阅方法改变了,现在它返回void。

尝试使用subscribeWith(),而认购(),或拨打订阅()作为一个void函数


-1
投票

检查this之一。这是一个工作项目,而是一个有点复杂。你并不需要使用第二个请求,只是使用第一个。

val allRepositories =
    gitHubApi.getAllPublicRepositories().map {
    // taken sublist because GitHub has a restriction up to 60 calls rate limit per hour.
    it.subList(0, 5)
    }.doOnError {
        Log.e(TAG, "Exception: ", it)
    }.subscribeOn(Schedulers.io())

并根据需要做其他修改。

GitHub上有限制,高达60个来电每小时限速。

也许你应该看看https://api.github.com/rate_limit

© www.soinside.com 2019 - 2024. All rights reserved.