如以下代码所示,我想使用RxAndroid。但我面临两个问题:
1-我想将Array转换为observable,但是无法识别.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!");
}
};
}
答案 0 :(得分:1)
您最好升级rxjava,实际上您正在使用rxjava1。
然后,fromArray应该可以工作,您将处理DisposableObserver接口或Observer接口(rxjava> = 2.16)。
请注意,onSubscribe(Disposable d)是在Observer界面中定义的。
希望我会帮助您
答案 1 :(得分: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.
});
答案 2 :(得分:0)
您正在使用RxJava1。我记不清楚了,但是为什么不使用RxJava 2? 在RxJava github上:
1.x版本已于2018年3月31日终止生命。将不会进行进一步的开发,支持,维护,PR和更新。最新版本的Javadoc 1.3.8仍可访问。
也许第二版将帮助您解决问题
答案 3 :(得分:0)
使用 fromIterable
示例:
val arraylist: ArrayList<CustomObject>
Observable.fromIterable(arraylist)