데이터의 발행자와 수신자, 그리고 그 사이에 데이터를 변형해주는 변환 연산자(map, flatmap, zip)
private void doMap(){
Function<String, String> getMap = item -> "<"+item+">";
Observable.fromArray(new String[]{"aaa","bbb","ccc","ddd"})
.map(getMap)
.subscribe(
item -> data.add(item)
() -> adapter.notifyDataSetChanged()
)
}
String
, 아웃풋인 R은 Observable<String>
이 된다.private void doflatMap(){
Function<String, Observable<String>> getflatMap = item -> Observable.just(item + "[1]", item +"<2>");
Observable.fromArray(new String[]{"aaaa","bbbb","cccc","dddd"})
.flatMap(getflatMap)
.subscribe(
item -> datas.add(item),
() -> adapter.notifyDataSetChanged()
);
}
private void doGugudan(int dan)}
Function<Integer, Observable<Integer>> gugudan = num -> Observable.range(1,9).map(row -> num + "*" + row + "="+ num*row);
Observable.just(dan)
.flatMap(gugudan)
.subscribe( item -> datas.add(item),
() -> adapter.notifyDataSetChanged()
);
}
Observable.zip(옵져버블1, 옵져버블2, (옵1의 아이템, 옵2의 아이템 -> 처리)).subscribe
형태private void doZip(){
Observable.zip(Observable("Jeong"),
Observable("jaeyun"),
(item1, item2) -> "Last Name : "+ item1 +", First Name :"+item2)
.subscribe(zipped ->
((TextView) findViewById(R.id.tv).setText(zipped))
);
}