RxJava(RxAndroid)(二)(笔记)

来源:互联网 发布:良辰好景知几何书包网 编辑:程序博客网 时间:2024/06/05 08:25


 answersList = new ArrayList<>();        answersList.add("a");        answersList.add("b");        answersList.add("c");        answersList.add("d");        answersList.add("e");        answersList.add("f");        answersList.add("g");        answersList.add("h");        //这里采用循环的方法将集合的内容给遍历出来,但出现了想对单个内容操作的麻烦//       query("hello world").subscribe(new Action1<List<String>>() {//           @Override//           public void call(List<String> strings) {//               StringBuffer stringBuffer = new StringBuffer();//               for(String string : strings){//                   stringBuffer.append(string + "\n");//               }//               tv1.setText(stringBuffer);//           }//       });        //跟上方的相比是把循环换成用from来代替,from这个方法是将一个集合的元素一个个返回输出给Subscriber       //这样我们可以在最后面的Subscriber里对每个内容进行操作//        query("hello world").subscribe(new Action1<List<String>>() {//            @Override//            public void call(List<String> strings) {//                final StringBuffer stringBuffer = new StringBuffer();         //                Observable.from(strings).subscribe(new Action1<String>() {//                    @Override//                    public void call(String s) {//                      stringBuffer.append(s + "\n");//                        tv1.setText(stringBuffer );//                    }//                });//            }//        });        //从上面改写的from里可以看到还是出现了Subscription的嵌套,一共有两个scuriber,接下来使用一个叫flatMap的方法        //通过flatmap将这个集合的内容一个个返回,然后在最下面的Subscriber里就可以对每个内容进行操作        //跟上一步相比都实现了在最后面的Subscriber里可以对每个内容做操作,但相比上一个就少了嵌套的出现,并且代码也简洁了些        query("hello world").flatMap(new Func1<List<String>, Observable<String>>() {            @Override            public Observable<String> call(List<String> strings) {                return Observable.from(strings);            }        }).subscribe(new Action1<String>() {            StringBuffer stringBuffer = new StringBuffer();            @Override            public void call(String s) {                stringBuffer.append(s + "\n");                tv1.setText(stringBuffer);            }        });


 public Observable<List<String>> query(String question){        //模拟输入一个关键词返回一个结果列表的操作,在这里这个question没有起作用,只是一个模拟而已      return Observable.create(new Observable.OnSubscribe<List<String>>() {          @Override          public void call(Subscriber<? super List<String>> subscriber) {              subscriber.onNext(answersList);              subscriber.onCompleted();          }      });    }



0 0