use of com.camnter.newlife.bean.RxChildData in project AndroidLife by CaMnter.
the class RxJavaMapActivity method initData.
@Override
protected void initData() {
/**
* map一对一的类型转换
* 通过map改变订阅者接受的参数
* 传入的是Integer,改后变为String
* 订阅者接收到的也是String
*/
this.disposable.add(Flowable.just(KEY).map(new Function<Integer, String>() {
@Override
public String apply(@NonNull Integer integer) throws Exception {
switch(integer) {
case KEY:
return VALUE;
default:
return VALUE;
}
}
}).subscribe(new Consumer<String>() {
@Override
public void accept(@NonNull String s) throws Exception {
RxJavaMapActivity.this.rxMapOneTV.setText(s);
}
}));
RxData data1 = new RxData();
data1.setId(106L);
RxData data2 = new RxData();
data2.setId(206L);
RxData data3 = new RxData();
data3.setId(266L);
RxData[] data = { data1, data2, data3 };
/**
* map一对一的类型转换
* 通过map改变订阅者接受的参数
* 传入的是RxData,改后变为Long
* 订阅者接收到的也是Long
*/
this.disposable.add(Flowable.fromArray(data).map(new Function<RxData, Long>() {
@Override
public Long apply(@NonNull RxData rxData) throws Exception {
return rxData.getId();
}
}).subscribe(new Consumer<Long>() {
@Override
public void accept(@NonNull Long aLong) throws Exception {
String text = RxJavaMapActivity.this.rxMapTwoTV.getText().toString();
text += aLong + " ";
RxJavaMapActivity.this.rxMapTwoTV.setText(text);
}
}));
RxData parentData = new RxData();
RxChildData childData1 = new RxChildData();
childData1.setChildContent("childData1");
RxChildData childData2 = new RxChildData();
childData2.setChildContent("childData2");
RxChildData childData3 = new RxChildData();
childData3.setChildContent("childData3");
RxChildData[] childData = { childData1, childData2, childData3 };
parentData.setChildData(childData);
/**
* flatMap一对多的类型转换
* flatMap() 和 map() 有一个相同点:它也是把传入的参数转化之后返回另一个对象。
* 和 map() 不同的是, flatMap() 中返回的是个 Observable 对象,
* 并且这个 Observable 对象并不是被直接发送到了 Subscriber 的回调方法中。
* flatMap() 的原理是这样的:
* 1. 使用传入的事件对象创建一个 Observable 对象;
* 2. 并不发送这个 Observable, 而是将它激活,于是它开始发送事件;
* 3. 每一个创建出来的 Observable 发送的事件,都被汇入同一个 Observable,而
* 这个 Observable 负责将这些事件统一交给 Subscriber 的回调方法。这三个步骤,把
* 事件拆成了两级,通过一组新创建的 Observable 将初始的对象『铺平』之后通过统一路径
* 分发了下去。而这个『铺平』就是 flatMap() 所谓的 flat
*/
this.disposable.add(Flowable.fromArray(parentData).flatMap(new Function<RxData, Publisher<RxChildData>>() {
@Override
public Publisher<RxChildData> apply(@NonNull RxData rxData) throws Exception {
return Flowable.fromArray(rxData.getChildData());
}
}).subscribe(new Consumer<RxChildData>() {
@Override
public void accept(@NonNull RxChildData rxChildData) throws Exception {
String text = RxJavaMapActivity.this.rxFlatMapThrTV.getText().toString();
text += rxChildData.getChildContent() + " ";
RxJavaMapActivity.this.rxFlatMapThrTV.setText(text);
}
}));
}
Aggregations