Android 可观察的回报<;歌曲>;来自包含列表的SongResponse对象<;歌曲>;

Android 可观察的回报<;歌曲>;来自包含列表的SongResponse对象<;歌曲>;,android,observable,retrofit2,rx-android,Android,Observable,Retrofit2,Rx Android,我有一个类歌曲响应: public class SongResponse implements Parcelable { @SerializedName("token") public String token; @SerializedName("items") public List<Song> songList; } @GET("songs") Observable<SongResponse> getSongs(@Query("t

我有一个类
歌曲响应

public class SongResponse implements Parcelable {

    @SerializedName("token")
    public String token;

    @SerializedName("items")
    public List<Song> songList;
}

@GET("songs")
Observable<SongResponse> getSongs(@Query("token") String token)
syncSongs
将调用另一个
Observer
在数据库中插入歌曲


我用了RxAndroid 2。我试图查找关于
.map
.flatMapIterable
的信息,但没有导致我的问题。你能帮我完成这个功能吗

您可以尝试类似的方法:

public Observable syncSongs(token) {
    return mSongService.getSongs(token).flatMap(new Function<SongResponse, ObservableSource<List<Song>>() {
        @Override
        public ObservableSource<List<Song>> apply(@io.reactivex.annotations.NonNull SongResponse songResponse) throws Exception {
            return Observable.just(songResponse.getSongList()); //some changes here
        }
    }).flatMapIterable(new Function<List<Song>, Iterable<? extends Song>>() {
        @Override
        public Iterable<? extends Song> apply(List<Song> songs) throws Exception {
            return songs;
        }
    }).flatMap(new Function<Song, Observable<Song>>() {
        @Override
        public Observable<Song> apply(final Song song) throws Exception {
            return Observable.just(song);
        }
    });
}
公共可观测同步歌曲(令牌){

return mSongService.getSongs(token).flatMap(新函数)您想为列表中的每首歌或指定的每首歌返回一个可观察到的值吗?是的,为列表中的每首歌返回一个可观察到的值谢谢@Cochi,但是存在错误,我忘记了可观察到的getSong()return Observable,not of song你能从
songfresponse
中获得歌曲列表吗?我尝试了这段代码,但仍然不起作用,但无论如何,谢谢。有什么问题吗?在返回第一个flatMap(新函数)时出现了不兼容的类型错误
public Observable syncSongs(token) {
    return mSongService.getSongs(token).flatMap(new Function<SongResponse, ObservableSource<List<Song>>() {
        @Override
        public ObservableSource<List<Song>> apply(@io.reactivex.annotations.NonNull SongResponse songResponse) throws Exception {
            return Observable.just(songResponse.getSongList()); //some changes here
        }
    }).flatMapIterable(new Function<List<Song>, Iterable<? extends Song>>() {
        @Override
        public Iterable<? extends Song> apply(List<Song> songs) throws Exception {
            return songs;
        }
    }).flatMap(new Function<Song, Observable<Song>>() {
        @Override
        public Observable<Song> apply(final Song song) throws Exception {
            return Observable.just(song);
        }
    });
}