如何合并附近的Places API和Places details API?改装Java RX

时间:2019-05-09 16:01:46

标签: java android retrofit rx-java

我对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);
    }

1 个答案:

答案 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/