Как преобразовать массив в наблюдаемый
Как показано в следующем коде, я хотел бы использовать 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.
});