我对android非常陌生,请提供一些帮助。 我需要在用户附近找到餐馆,并在回收者视图中显示他们的信息。 因此,我使用Places api:附近和详细信息。 我有两个请求,一个请求获取用户附近的一个餐馆列表(我检索一个包含餐馆对象列表的对象,我将它们保存在餐馆对象数组中) 并获取第一个请求找到的每个餐厅的详细信息(它需要工作地点s id,在第一个请求中找到)。 问题在于请求未按正确的顺序执行,因此我的回收者视图显示不正确。 我可能应该将我的请求链接成只有一个? 我做了一些研究,但是我找不到方法,因为我需要为第一个请求中找到的每个餐厅提出第二个请求。
这是我的流
我应该如何与他们一起制作视频流?
private static PlacesService placesService = PlacesService.retrofit.create(PlacesService.class);
public static Observable<RestaurantObject> streamFetchRestaurants(String latitudeLongitude, int radius, String type, String apiKey) {
return placesService.getRestaurants(latitudeLongitude,radius,type, apiKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.timeout(10, TimeUnit.SECONDS);
}
public static Observable<RestaurantInformationObject> streamFetchRestaurantInfos(String id, String apikey) {
return placesService.getRestaurantInfo(id, apikey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.timeout(10, TimeUnit.SECONDS);
}
答案 0 :(得分:0)
使用concatMap
应该存档您想要的内容:
streamFetchRestaurants(latLon, radius, type, apiKey)
.concatMap(restaurantObject -> streamFetchRestaurantInfos(restaurantObject.id, apiKey))
.subscribe(restaurantInformationObject -> {
// Do something with the restaurant information object
});
与flatMap
相反,它保留了您餐厅的原始订单。有关更多详细信息,请参阅RxJava文档或以下文章:https://fernandocejas.com/2015/01/11/rxjava-observable-tranformation-concatmap-vs-flatmap/