RxJava(RxAndroid)(一)(笔记)
来源:互联网 发布:武汉少儿编程培训班 编辑:程序博客网 时间:2024/05/29 10:57
最近开始接触RxJava(RxAndroid),但还是一脸懵逼,想到之前听过的一个建议是,先不管懂不懂,从头到尾敲一遍先。那就把敲过的代码一段一段地记录下来
1.一开始
colorList = new ArrayList<>(); colorList.add("red"); colorList.add("green"); colorList.add("black"); colorList.add("white"); colorList.add("yellow");
Observable<List<String>> listObservable = Observable.create(new Observable.OnSubscribe<List<String>>() { @Override public void call(Subscriber<? super List<String>> subscriber) { subscriber.onNext(colorList); subscriber.onCompleted(); } }); Subscriber<List<String>> listSubscriber = new Subscriber<List<String>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(List<String> strings) { StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < strings.size(); i++) stringBuffer.append(strings.get(i)); tv1.setText(stringBuffer); } }; listObservable.subscribe(listSubscriber);另外一种简洁写法,用于只发出一个事件:
Observable<List<String>> listObservable = Observable.just(colorList); listObservable.subscribe(new Observer<List<String>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { tv1.setText("error"); } @Override public void onNext(List<String> strings) { StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < strings.size(); i++) stringBuffer.append(strings.get(i)); tv1.setText(stringBuffer); } });
如果不考虑onComplete和onError,那么更简化的写法:
Observable.just(colorList).subscribe(new Action1<List<String>>() { @Override public void call(List<String> strings) { StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < strings.size(); i++) stringBuffer.append(strings.get(i)); tv1.setText(stringBuffer); } });
总结:首先要记住是有Observable和Subscriber这两个东西,然后Observable必须有Subscriber才能起作用,所以就必须会有出现订阅的地方。
然后它会先订阅,然后执行onNext,当onNext执行完后,就会执行onComplete或是onError。
Subscriber有三个重载方法,可以选择性的使用是onNext 或 onNext , onError还是 onNext ,onError,onComplete 。
2.加个操作符
//第二部分 操作符 RxJava有大量的操作符,需要我们耐心地去学习 //首先还是一个最简单的例子// Observable.just("Hello World").subscribe(new Action1<String>() {// @Override// public void call(String s) {// tv1.setText(s);// tv2.setText(s);// }// }); //现在要hello world的基础上做修改,加上个名字,那么可以这样写// Observable.just("Hello World ——JD").subscribe(new Action1<String>() {// @Override// public void call(String s) {// tv1.setText(s);// tv2.setText(s);// }// }); //但当没有权限,或只是在某个地方增加名字而已,这样就不好了,因为上面那样写意味着所有的地方都会这样加签名,所以改成这样 //就只有一个textview是加上名字的// Observable.just("Hello World").subscribe(new Action1<String>() {// @Override// public void call(String s) {// tv1.setText(s + "——JD");// tv2.setText(s);// }// }); //上面这种就实现了某个效果,现在换成用操作符看看,这里使用map操作符,之所以换成操作符是为了让Subscriber里做的事情越来越少 //map操作符就是把一个事件转换成另外一个事件,而且我觉得这样修改应该也是方便些,想删掉的话就直接把call部分删掉// Observable.just("Hello World").map(new Func1<String, String>() {// @Override// public String call(String s) {// return s + "——JD";// }// }).subscribe(new Action1<String>() {// @Override// public void call(String s) {// tv1.setText(s);// tv2.setText(s);// }// }); //然后我们再多增加一个map,现在就发现我们对数据类型发生了改变 Observable.just("Hello World").map(new Func1<String, String>() { @Override public String call(String s) { return s + "——JD"; } }).map(new Func1<String, Integer>() { @Override public Integer call(String s) { return s.hashCode(); } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { tv1.setText(integer.toString()); tv2.setText(integer.toString()); } });
参考来源:
深入浅出RxJava(一:基础篇)
从案例学RxAndroid开发(上)
0 0
- RxJava(RxAndroid)(一)(笔记)
- RxJava 和 RxAndroid (一)
- Rxjava和RxAndroid系列(一)
- RxJava(RxAndroid)(二)(笔记)
- RxAndroid学习笔记(一)
- RxJava+RxAndroid+MVP入坑实践(一:基础篇)
- RxJava+RxAndroid+MVP入坑实践(一:基础篇)
- Android——深入浅出RxJava 1和RxAndroid(一)
- RxAndroid 学习笔记(一) 初次了解
- RxJava Android(RxAndroid) 开发全家桶
- RxJava Android(RxAndroid) 开发全家桶
- RxJava(RxAndroid)线程切换机制
- RxJava 和 RxAndroid 五(线程调度)
- RxJava 和 RxAndroid 五(线程调度)
- RxJava Android(RxAndroid) 开发全家桶
- RxJava 和 RxAndroid 五(线程调度)
- RxJava 和 RxAndroid 五(线程调度)
- RxJava 和 RxAndroid 五(线程调度)
- 营养与维生素C
- 11.1 NOIP模拟赛(morning)
- 插入数值
- POJ 3126 - 筛素数+BFS
- HDU 5968 异或密码
- RxJava(RxAndroid)(一)(笔记)
- HDU 5963 朋友(找规律)
- Linux系统移植笔记
- 对“Java”的诞生历史、特点、定义等HR常问的简单题
- Mysql5.7下载安装与配置
- 手把手教你怎么去除Android APP里面的广告
- LeetCode 384. Shuffle an Array
- Android开发四大组件
- HDU 5980 Find Small A(水题)