public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 基本使用
// RXJavaBase();
//RxAndroid接收一个集合对象,对其中数据一个一个观察
// RXJavaFrom();
// RxAndroid接收一个集合对象,对整个集合进行操作
// RxJavaJust();
//RxAndroid接收一个集合对象,对其中数据进行过滤
// RxJavaFilterStream();
//RxAndroid接收一个集合对象,对其中数据进行转换
// RxJavaMapStream();
//把拿到的集合,进行拆分观察
RxJavaFlatMap();
}
/*
* 将几个集合数据进行操作
* */
private void RxJavaFlatMap() {
//创建集合
List<Integer> list1 = Arrays.asList(1,2,3,4,7,8,0);
List<Integer> list2 = Arrays.asList(5,6,3);
List<Integer> list3 = Arrays.asList(11,12,13,9);
Observable.just(list1,list2,list3)
//这样使用,以后可以减少双层for循环
.flatMap(new Func1<List<Integer>, Observable<?>>() {
@Override
public Observable<?> call(List<Integer> integers) {
return Observable.from(integers);
}
})
.subscribe(new Action1<Object>() {
@Override
public void call(Object o) {
Log.d("+++","rxjava对多个集合的操作"+o);
}
});
}
/*
* 使用map对集合数据进行转换---数据类型转换
* */
private void RxJavaMapStream() {
//创建集合
List<Integer> list = Arrays.asList(1,2,3,4,7,8,0);
Observable.from(list)
//对集合数据进行转换,参数 1.代表了原数据类型(转换前) 2.代表了要转换最终结果的数据类型(转换后)
//提示:可以把流转换成bitmap,文件,String... 把String字符串或数据库Cursor转换为Bean类等
.map(new Func1<Integer, String>() {
@Override
public String call(Integer integer) {
return integer.toString();
}
})
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.d("++++","rxjava对集合数据类型转换操作"+s);
}
});
}
/*
* rejava对集合中的数据进行过滤
* */
private void RxJavaFilterStream() {
//创建集合
List<Integer> list = Arrays.asList(1,2,3,4,7,8,0);
//创建被观察者
Observable.from(list)
//对集合数据进行过滤,只发送符合条件的事件
.filter(new Func1<Integer, Boolean>() {
@Override
public Boolean call(Integer integer) {
return integer<5;
}
})
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
Log.d("++++","rxjava对集合的过滤"+integer);
}
});
}
/*
* rxjava对整个集合进行操作
*
* */
private void RxJavaJust() {
//创建集合
List<Integer> list = Arrays.asList(1,2,3,4,7,8,0);
//参数是一个集合,使用这种方式,会把这个集合整个输出一次
Observable.just(list)
.subscribe(new Action1<List<Integer>>() {
@Override
public void call(List<Integer> integers) {
Log.d("++++","rxjava对集合的操作--just"+integers);
}
});
}
//rxjava对集合中的数据一个一个观察
private void RXJavaFrom() {
//创建集合
List<Integer> list = Arrays.asList(1,2,3,4,7,8,0);
//创建被观察者对象
//参数是一个集合,使用这种方式,会根据集合的数量调用对应次数的subscriber.onNext方法,把集合中的数据一个一个输出
Observable.from(list)
//被观察者一创建就指定了观察者,如此就不用在后面进行注册绑定了
//如果用不到onError,onCompleted方法,就创建Action1 ,其中的call == onNext
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
//集合中有多少数据 onNext方法就被调用了多少次
Log.d("++++","观察集合中的每个数据"+integer);
}
});
}
/*
* 关于rejava的基本使用
* */
private void RXJavaBase() {
//创建被观察者
Observable<String> stringObservable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
//被观察者调用观察者的方法
subscriber.onNext("aaa");
//被观察者观察结束后 调用的方法
subscriber.onCompleted();
}
});
//创建观察者
Subscriber subscribe = new Subscriber<String>() {
@Override
public void onStart() {
super.onStart();
}
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Log.d("+++++","基本应用next:"+s);
}
};
//把观察者注册到被观察身上,只要一有这段代码,Observable.create下的call方法就会执行
stringObservable.subscribe(subscribe);
}
}
RxJava的使用---包括对集合数据的操作
最新推荐文章于 2021-07-08 10:13:32 发布