Как преобразовать массив в наблюдаемый

Как показано в следующем коде, я хотел бы использовать RxAndroid. но я сталкиваюсь с двумя проблемами:

1- Я хочу преобразовать массив в наблюдаемый, но метод.fromArray не распознается

2- Почему в интерфейсе Observer не реализован onSubscribe(Disposable d)?

пожалуйста, дайте мне знать, как исправить эти две проблемы.

построить 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!");
        }
    };
}

3 ответа

Вы используете RxJava 1. Я не помню это ясно, но почему не RxJava 2? На RxJava Github:

Версия 1.x устарела по состоянию на 31 марта 2018 года. Дальнейшей разработки, поддержки, обслуживания, PR и обновлений не будет. Javadoc самой последней версии, 1.3.8, останется доступным.

Возможно 2-я версия поможет решить вашу проблему

Вам лучше обновить rxjava, на самом деле вы используете rxjava1.

проверить последнюю версию

Тогда fromArray должен работать, и вы будете иметь дело с интерфейсом DisposableObserver или интерфейсом Observer (rxjava >= 2.16).

Обратите внимание, что onSubscribe(Disposable d) определяется внутри интерфейса Observer.

надеюсь я тебе помогу

Использовать fromIterable

пример:

val arraylist: ArrayList<CustomObject>
Observable.fromIterable(arraylist)
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.
});
Другие вопросы по тегам