android - RxJava2 toList() 从不发射

标签 android rx-java2 android-room

所以我有以下无效的 Disposable。我正在使用 Room 从表中获取所有行作为列表,将它们中的每一行映射到某个内容并创建一个列表,然后它不会从那里继续。

storedSuggestionDao
    .getSuggestionsOrderByType() //Flowable
    .doOnNext(storedSuggestions -> Timber.e("storedSuggestions: " + storedSuggestions)) //this work
    .flatMapIterable(storedSuggestions -> storedSuggestions)
    .map(Selection::create) ))
    .doOnNext(selection -> Timber.e("Selection: " + selection)) // works
    .toList()
    .toObservable() // nothing works after this...
    .doOnNext(selections -> Timber.d("selections: " + selections))
    .map(SuggestionUiModel::create)
    .doOnNext(suggestionUiModel -> Timber.d("suggestionUiModel: " + suggestionUiModel))
    .subscribe();

最佳答案

来自第 3 方的这些类型的数据源通常是无限源,但 toList() 需要有限源。我猜您想处理 storedSuggestions 的集合并将它们放在一起。您可以通过内部转换实现此目的:

storedSuggestionDao
.getSuggestionsOrderByType() //Flowable
.doOnNext(storedSuggestions -> Timber.e("storedSuggestions: " + storedSuggestions)) //this work
// -------------------------------------
.flatMapSingle(storedSuggestions -> 
    Flowable.fromIterable(storedSuggestions)
    .map(Selection::create)
    .doOnNext(selection -> Timber.e("Selection: " + selection))
    .toList()
)
// -------------------------------------
.doOnNext(selections -> Timber.d("selections: " + selections))
.map(SuggestionUiModel::create)
.doOnNext(suggestionUiModel -> Timber.d("suggestionUiModel: " + suggestionUiModel))
.subscribe();

关于android - RxJava2 toList() 从不发射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47327070/

相关文章:

android - 在生产中使用 beta 库是否安全?

java - 如何在 RxJava 中获得多个响应?

android - 如何在 Room 中插入具有一对多关系的实体

android - 如何更改表并添加 onDelete 级联约束 sqlite

android - RxSearchView 不支持 androidx SearchView?

java - 使用 Room Entity 返回列表包含整数而不是预期类型

java - 将 AsyncTask 重置为多次执行

android - 如何从代码中设置 PagerTitleStrip 的文本颜色、文本大小?

java - 多线程的启动和加入顺序不同?

java - RxJava2 - .blockingFirst() 未收到任何事件