Return Observable<Song> 来自包含 List<Song> 的 SongResponse 对象

Return Observable<Song> from an object of SongResponse that contains a List<Song>

我有一个 class SongResponse:

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)

在管理器 class 中,我想 return 一个 Observable 通过使用上面的请求

public Observable<Song> syncSongs(token) {

    return mSongService.getSongs(token);
        ....

        @Override
        public Observable<Song> call(List<Song> songs) {
            return mDatabaseHelper.setSongs(songs);
        }

}

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

希望对您有所帮助。