Android RxJava订阅的返回类型错误

Android RxJava订阅的返回类型错误,android,rx-java,rx-java2,rx-android,Android,Rx Java,Rx Java2,Rx Android,我刚从RxJava和RxAndroid开始,一直在努力。我在最后一部分中遇到了问题,我订阅了这个代码 subscription = GithubClient.getInstance() .getStarredRepositories(userName) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .s

我刚从RxJava和RxAndroid开始,一直在努力。我在最后一部分中遇到了问题,我订阅了这个代码

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() {

                }
            });
检查一个。这是一个工作项目,但有点复杂。您不需要使用第二个请求,只需使用第一个请求即可

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次通话


也许您应该在使用链接RxJava-1的示例时检查它。但在您的导入中,RxJava-2已导入=)

在第二个RX subscribe方法更改后,现在它返回void


尝试使用subscribeWith()而不是subscribe(),或者调用subscribe()作为无效函数

第一个代码示例中的问题是什么?然后我得到错误“无法解决方法subscribe(匿名rx.Observer…)。好的,谢谢!subscribeWith()返回一个观察者,因此也无法工作。调用subscribe()到底是什么意思作为一个void函数?我是RxJava的完全初学者。另外,哪些是正确的导入?谢谢!我建议您可以调用
GithubClient.getInstance()…subscribe()
not
subscription=GithubClient.getInstance()…subscribe()
接收操作的结果将是相同的。您需要订阅的唯一原因是以后取消订阅,例如,您在“活动”上启动“订阅”的长时间运行操作,但几分钟后用户离开“活动”。在这种情况下,订阅允许您取消订阅并节省资源。接收是一个复杂的主题。以看看这些链接
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())