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