RxJava,如果存在则获取第一项
RxJava, get first item if exists
我正在尝试使用 RxJava 从列表中获取第一项。但是,如果该项目不存在,我不希望它抛出错误。相反,我希望能够通过提供默认项目自己处理。
我在下面创建的代码可以正确地检索列表中的第一项。虽然我不知道如何将 .exists()
合并到其中。
api.getLibraryEntries(username)
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<List<Entry>, Observable<Entry>>() {
@Override
public Observable<Entry> call(List<Entry> Entries) {
return Observable.from(Entries);
}
})
.first(new Func1<Entry, Boolean>() {
@Override
public Boolean call(Entry entry) {
return entry.getId() == id;
}
})
.subscribe(
new Action1<Entry>() {
@Override
public void call(Entry entry) {
view.showEntry(entry);
}
},
new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
view.showError(throwable.getMessage());
}
});
感谢任何帮助。
有一个firstOrDefault
运算符:
// ...
.firstOrDefault(yourDefaultValue, new Func1<Entry, Boolean>() {
@Override
public Boolean call(Entry entry) {
return entry.getId() == id;
}
})
// ...
我正在尝试使用 RxJava 从列表中获取第一项。但是,如果该项目不存在,我不希望它抛出错误。相反,我希望能够通过提供默认项目自己处理。
我在下面创建的代码可以正确地检索列表中的第一项。虽然我不知道如何将 .exists()
合并到其中。
api.getLibraryEntries(username)
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<List<Entry>, Observable<Entry>>() {
@Override
public Observable<Entry> call(List<Entry> Entries) {
return Observable.from(Entries);
}
})
.first(new Func1<Entry, Boolean>() {
@Override
public Boolean call(Entry entry) {
return entry.getId() == id;
}
})
.subscribe(
new Action1<Entry>() {
@Override
public void call(Entry entry) {
view.showEntry(entry);
}
},
new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
view.showError(throwable.getMessage());
}
});
感谢任何帮助。
有一个firstOrDefault
运算符:
// ...
.firstOrDefault(yourDefaultValue, new Func1<Entry, Boolean>() {
@Override
public Boolean call(Entry entry) {
return entry.getId() == id;
}
})
// ...