我有一个班级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)
在经理课程中,我想通过上面的请求
返回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
,但不会导致我的问题。你能帮我完成这个功能吗?
答案 0 :(得分:0)
你可以尝试这样的事情:
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);
}
});
}
希望这有帮助。