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);
}
});
}
希望对您有所帮助。
我有一个 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);
}
});
}
希望对您有所帮助。