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();
                }
            });
        }
    });
}

