如何将数组转换为可观察的

问题描述 投票:2回答:4

如以下代码所示,我想使用RxAndroid。但我面临两个问题:

1-我想将Array转换为可观察的,但是无法识别方法.fromArray

2-为什么为什么在Observer界面中没有实现onSubscribe(Disposable d)?

请让我知道如何解决这两个问题。

build gradle

compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.9'

代码

import rx.Observable;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import rx.schedulers.Schedulers;

    //fromArray is not defined
  private Observable<String> getAnimalsObservable() {
    return Observable.fromArray(
            "Ant", "Ape",
            "Bat", "Bee", "Bear", "Butterfly",
            "Cat", "Crab", "Cod",
            "Dog", "Dove",
            "Fox", "Frog");
}

//why in the following interface, i dont have onSubscribe(Disposable d)
private Observer<String> getAnimalsObserver() {
    return new Observer<String>() {
        @Override
        public void onNext(String s) {
            Log.d(TAG, "Name: " + s);
        }

        @Override
        public void onError(Throwable e) {
            Log.e(TAG, "onError: " + e.getMessage());
        }

        @Override
        public void onCompleted() {
            Log.d(TAG, "All items are emitted!");
        }
    };
}
android rx-java rx-java2 rx-android
4个回答
1
投票

您最好升级rxjava,实际上您正在使用rxjava1。

检查latest version

然后,fromArray应该可以工作,您将处理DisposableObserver接口或Observer接口(rxjava> = 2.16)。

注意onSubscribe(Disposable d)在Observer界面中定义。

希望我会帮助您


0
投票
private Observable<String> getAnimalsObservable() {
    return Observable.from(Arrays.asList(
        new String[] {
            "Ant", "Ape",
            "Bat", "Bee", "Bear", "Butterfly",
            "Cat", "Crab", "Cod",
            "Dog", "Dove",
            "Fox", "Frog"}
    ));
}

您可以这样订阅

getAnimalsObservable().subscribe(i -> {
    // Do some thing with 'i', it's a list of String.
});

或者您也可以这样做

Observable.from(Arrays.asList(new String[] {"1", "2", "3", }))
.subscribe(i -> {
    // Do some thing with 'i', it's a list.
});

0
投票

您正在使用RxJava1。我记不清楚了,但是为什么不使用RxJava 2?在RxJava github上:

1.x版本的使用期限截至2018年3月31日。将不会进行进一步的开发,支持,维护,PR和更新。最新版本的Javadoc 1.3.8仍可访问。

也许第二版将帮助您解决问题


0
投票

使用fromItererable

示例:

val arraylist: ArrayList<CustomObject>
Observable.fromIterable(arraylist)
© www.soinside.com 2019 - 2024. All rights reserved.