RxJava的使用---包括对集合数据的操作

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);
    }

   

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值