对列表中项目的Android Api调用

对列表中项目的Android Api调用,android,api,retrofit,rx-java,Android,Api,Retrofit,Rx Java,我正在尝试调用列表中的每个项目,为列表中的每个项目添加一些额外的数据。我使用的是改型+RxJava 我需要得到的用户名单,为每个用户打电话,并得到他的地址邮政编码城市 我是多么想得到这个 public void getUsers() { Observable<List<User>> userObservable = mService.getUsers() .flatMapIterable(new Func1<List<User&

我正在尝试调用列表中的每个项目,为列表中的每个项目添加一些额外的数据。我使用的是改型+RxJava

我需要得到的用户名单,为每个用户打电话,并得到他的地址邮政编码城市

我是多么想得到这个

public void getUsers() {
    Observable<List<User>> userObservable = mService.getUsers()
            .flatMapIterable(new Func1<List<User>, Iterable<User>>() {
                @Override
                public Iterable<User> call(List<User> user) {
                    return users;
                }
            })
            .flatMap(new Func1<User, Observable<City>>() {
                @Override
                public Observable<City> call(User user) {
                    return mService.getCity(user.getAdress.getPostal_code);
                }
            })
            .map(new Func1<User, City>() {
                @Override
                public City call(User user) {
                    return user.getAdress().getCity().getName();
                }
            })

在映射函数中,我得到错误“不存在类型变量的实例,所以城市符合用户”。我认为模型中存在错误,但不知道如何使它们正确。我是Rxjava的新手,这里有问题。

此操作正在返回,尝试将
用户
转换为
可观察的

.flatMap(new Func1<User, Observable<City>>() {
    @Override
    public Observable<City> call(User user) {
        return mService.getCity(user.getAdress.getPostal_code());
    }
})
user.getAddress().getCity().getName()返回一个
字符串

public class City {

    @SerializedName("name")
    @Expose
    private String name;

    public String getName() {
        return name;
    }


因此,我认为您的意思是
.map(new Func1(){
),尽管我也认为您应该订阅
可观察的
,而不是在其上进行映射。然后,如果您遵循RxJava的订阅模型,那么您可能只
返回mService.getUsers().FlatMapiteTable(…
从该方法中删除,并停止最后的映射操作。

请继续编辑您的问题。仍有一些错误不应编译。好的,我根据您的备注进行了编辑,现在我收到错误“推理变量R具有不兼容的边界,等式约束下界:列表,下界:字符串”很抱歉,如果不看到最后一个.map()部分中的错误指向何处,我就不知道这意味着什么。您希望该服务调用实际执行什么操作?该方法名为getUsers,但您编写的代码似乎试图获取所有用户的城市名称。我想根据用户的邮政编码获取具有城市名称的用户列表。
.flatMap(new Func1<User, Observable<City>>() {
    @Override
    public Observable<City> call(User user) {
        return mService.getCity(user.getAdress.getPostal_code());
    }
})
.map(new Func1<User, City>() {
    @Override
    public City call(User user) {
        return user.getAdress().getCity().getName();
    }
})
public class City {

    @SerializedName("name")
    @Expose
    private String name;

    public String getName() {
        return name;
    }