「単純な問題」に対するRXJava2ソリューションの策定には苦労しています。私は単純なユースケースを超えてRXJavaをよく経験していません。AndroidでRXJava2を使用したネストされたリストの統合/平滑化
私はのように見えることContainer
があるとします。モデルの残りの部分は、このモデルのようなネストされたリストのシリーズです
class Container {
List<A> listOfA;
}
:
class Base {
// irrelevant content
}
class A extends Base {
List<B> listOfB;
}
class B extends Base {
// irrelevant content
}
私のコードのどこかに、私が取得Single<Container>
ように:
(注:読みやすくするために、コード/タイプ/などは難読化/簡略化されました。)
disposables = new CompositeDisposable(); // not important here
disposables.add(
interactor.getTheContainer() // This returns a Single<Container>
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver<Container>() {
// on error ommited for clarity
@Override
public void onSuccess(final Container value) {
process(value);
}
})
);
private void process(final Container container) {
List<Base> items = new ArrayList<>();
List<A> listOfA = container.getListOfA();
for (A a : listOfA) {
items.add(a);
items.addAll(a.getListOfB());
}
// do something with "items" - ommited for clarity
}
)私は失敗し多分私はいけない(RXJavaにメソッドprocess(Container)
を変換しようとしてきたが、今私が知りたいです。
私は実験したすべてのものを一覧表示することはできませんが、私はRXJava 2には本当に新しくなっています(RXで過去に何度もやったことの大半は、RetrofitからのObservablesあまりにも派手な、またはオットー/グアバを置き換えるためのイベントバスとして)、私は本当にRXツールセットの良い使い方を熟知していません。私はを考えてくださいマップのいくつかの並べ替えが動作するはずですが、Javaの構文全体は、匿名の方法については私にとって本当に速く混乱しています。
質問です:私はprocess
方法のが、RXJava2と同じ操作を実行する方法のアイデアを/見てお読みください
?
注文が重要であり、最終的なリストは、現在の方法で、このようになりますし、私はそれをこのように必要があります。
0. A1
1. B1.1
2. B1.2
3. B1.nn…
4. A2
5. B2.1
6. B2.2
7. B2.nn…
8. A3
9. B3.1
…
あなたがアイデアを得ます。
ヒント私はで、はRetrolambdaやJava 8を持っていません(それを使うことはできません。私の決定ではないので、何もできません)。
それをやったおかげで、。私は近くにいることを知っていた;)余分な図書館を追加するためにIxJavaを試していなかったのは、たくさんの作業が必要だった( "尋ねる、承認する、管理する、などなど...") –