RxAndroid操作符(四)

来源:互联网 发布:移动数据被禁用怎么开 编辑:程序博客网 时间:2024/06/06 14:22
RxAndroid操作符就是
对集合的操作
1.RxAndroid接收一个集合对象,对其中数据一个一个观察
//创建一个集合,并装上数据
List<Integer> integers = Arrays.asList(1,2,3,4,5);
//创建被观察者,注意:这里不要用成java包下的,而是要用rx包下的类
//参数是一个集合,使用这种方式,会根据集合的数量调用对应次数的subscriber.onNext方法,把集合中的数据一个一个输出
Observable.from(integers)
//被观察者一创建就指定了观察者,如此就不用在后面进行注册绑定了
//如果用不到onError,onCompleted方法,就创建Action1 ,其中的call == onNext
.subscribe(newAction1<Integer>() {
@Override
public voidcall(Integer integer) {
    System.out.println("onNext : " + integer);
}
});

2.RxAndroid接收一个集合对象,对整个集合进行操作
//创建一个集合,并装上数据
List<Integer> integers = Arrays.asList(1,2,3,4,5);
//创建被观察者,注意:这里不要用成java包下的,而是要用rx包下的类
//参数是一个集合,使用这种方式,会把这个集合整个输出一次
Observable.just(integers)
         //被观察者一创建就指定了观察者,如此就不用在后面进行注册绑定了
//如果用不到onError,onCompleted方法,就创建Action1 ,其中的call == onNext
.subscribe(newAction1<List<Integer>>() {
@Override
public voidcall(List<Integer> integers) {
    System.out.println(integers);
}
});

3.RxAndroid接收一个集合对象,对其中数据进行过滤
//创建一个集合,并装上数据
List<Integer> integers = Arrays.asList(1,2,3,4,5);
//创建被观察者,注意:这里不要用成java包下的,而是要用rx包下的类
//参数是一个集合,使用这种方式,会根据集合的数量调用对应次数的subscriber.onNext方法,把集合中的数据一个一个输出
Observable.from(integers)
//对集合数据进行过滤,只发送符合条件的事件
.filter(newFunc1<Integer, Boolean>() {
@Override
publicBoolean call(Integer integer) {
    returninteger <4;
}
})
//如果用不到onError,onCompleted方法,就创建Action1 ,其中的call == onNext
.subscribe(newAction1<Integer>() {
@Override
public voidcall(Integer integer) {
    System.out.println("onNext : " + integer);
}
});

4.RxAndroid接收一个集合对象,对其中数据进行转换
//创建一个集合,并装上数据
List<Integer> integers = Arrays.asList(1,2,3,4,5);
//创建被观察者,注意:这里不要用成java包下的,而是要用rx包下的类
//参数是一个集合,使用这种方式,会根据集合的数量调用对应次数的subscriber.onNext方法,把集合中的数据一个一个输出
Observable.from(integers)
//对集合数据进行转换,参数 1.代表了原数据类型(转换前) 2.代表了要转换最终结果的数据类型(转换后)
//提示:可以把流转换成bitmap,文件,String...String字符串或数据库Cursor转换为Bean类等
.map(newFunc1<Integer, String>() {
@Override
publicString call(Integer integer) {
    returninteger.toString();
}
})
//如果用不到onError,onCompleted方法,就创建Action1 ,其中的call == onNext
.subscribe(newAction1<String>() {
@Override
public voidcall(String s) {
    System.out.println(s);
}
});

5.RxAndroid把拿到的数个集合,进行拆分观察
//创建一个集合,并装上数据
List<Integer> integers = Arrays.asList(1,2, 3, 4, 5);
List<Integer> integers1 = Arrays.asList(6,7, 8);
List<Integer> integers2 = Arrays.asList(9,10);
//创建被观察者,注意:这里不要用成java包下的,而是要用rx包下的类
//参数是一个集合,使用这种方式,会把这个集合整个输出一次
Observable.just(integers, integers1, integers2)//这里会输出3,但经过修改要他发送10
//这样使用,以后可以减少双层for循环
.flatMap(new Func1<List<Integer>, Observable<?>>() {
//将一个数据再转变为一个观察者
@Override
public Observable<?> call(List<Integer> integers) {
    returnObservable.from(integers);
}
})
/* .subscribe(new Action1<List<Integer>>() {
@Override
public void call(List<Integer> integers) {
    System.out.println(integers);
}
});*/
.subscribe(new Action1<Object>() {
@Override
public void call(Object o) {
    System.out.println(o);
}
});
















原创粉丝点击