Observableを作る
最終更新日:2017-05-04
まずはデータを出す箱となるObservableを作りましょう。代表的な作り方は次の3種類です。
- リストから作る
- データ1つから作る
-
create
メソッドで作る
リストから作る
データを複数個出力するObservableを簡単に作る方法です。
private Observable<String> getUserIdList() {
return Observable.fromArray("user-1", "user-2", "user-3");
}
List<T>
から作る場合は、fromIterable()
を使います。
private Observable<String> getUserIdList() {
List<String> l = new ArrayList<>();
l.add("user-1");
l.add("user-2");
l.add("user-3");
return Observable.fromIterable(l);
}
データ1つから作る
fromArray()
にデータを1つ入れることでもできますが、データが1つだけの場合はjust()
というメソッドが使えます。
private Observable<String> getUserId() {
return Observable.just("user-1");
}
create
メソッドで作る
既存のライブラリがコールバック形式の場合はcreate()
を使ってObservableにすることができます。
private DummyClient client;
private Observable<String> getUserId() {
return Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(final ObservableEmitter<String> e) throws Exception {
// 非同期処理の終了はeを通じて通知する
client.sendRequest(new DummyClient.Callback() {
@Override
public void onSuccess(String userId) {
e.onNext(userId);
e.onComplete();
}
});
}
});
}