我使用RxAndroid库+ Retrofit2。
我有2个帖子请求:
我需要加载所有产品并在启动App后保存到数据库。
当我创建MainFragment时,我得到所有类别:
restApiFactory.getProductService().getCategories(new CategoryRequest(initiatorId))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CategoriesHandler());
和处理回复:
@Override
public void onNext(CategoryResponse value) {
List<CategoryItem> categoryItems = value.getCategoryItems();
...
}
然后我需要发送另一个请求(ProductsByCategory
),但我不明白它是怎么做的?
我可以用foreach发送它:
for (CategoryItem categoryItem : categoryItems) {
Observable<Products> product = ProductsByCategory...
}
或maby有一些Observable合并....
我不知道。一般来说,怎么做?两个请求到服务器。一个将返回id和第二个产品的列表。
答案 0 :(得分:0)
您可以通过在rxjava中使用flaMap来实现此目的 这是示例摘要如何实现它
api.serviceA()
.flatMap(new Func1<FooA, Observable<FooB>>() {
@Override
public Observable<FooB> call(FooA fooA) {
// code to save data from service A to db
// call service B
return api.serviceB();
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<FooB>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(FooB fooB) {
// code to save data from service B to db
}
});
答案 1 :(得分:0)
您可以使用array[0]="3
45
60"
array[1]="10
62
12"
array[2]="5
72
12
67
89"
,使用case=test case 1
input=3
45
60
output=Enter the age:
Meenu got 27 coins
case=test case 2
input=10
62
12
output=Enter the age:
Meenu got 1000 coins
case=test case 3
input=5
72
12
67
89
output=Enter the age:
Meenu got 125 coins
致电api,然后使用Iterable
获取CategoryItem
的列表。