编程语言
首页 > 编程语言> > RxJava,获取第一项(如果存在)

RxJava,获取第一项(如果存在)

作者:互联网

我正在尝试使用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;
    }
})
// ...

标签:rx-java,rx-android,java
来源: https://codeday.me/bug/20191027/1942722.html