我正在努力想出一个“简单问题”的RXJava2解决方案。除了简单的用例,我对RXJava并不是非常有经验。使用RXJava2在Android中合并/拼合嵌套列表
假设我有一个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
}
我一直不成功尝试的方法process(Container)
转换为RXJava(也许我不应该,但现在我想知道的)。
我甚至不能列出所有我已经尝试过的东西,但我对RXJava 2非常陌生(我在过去几年中使用RX的大多数用法都是从Retrofit进行简单的观察,而没有任何东西太花哨,甚至作为事件总线来取代Otto/Guava),所以我真的不熟悉使用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来添加额外的库需要很多工作(“询问,批准,管理等等等等等等等等等等......”) –