当前位置: 首页 > 知识库问答 >
问题:

使用RxJava筛选项目列表

颜文昌
2023-03-14

如何使用RxJava过滤项目列表?

我有以下代码,LoadData()发出列表 :

repository.loadData()
        .subscribe(chatrooms -> {
            view.showData(chatrooms);
            view.showEmptyState(chatrooms.size() == 0);
        }, throwable -> Log.i("OnError", "onLoadChatrooms ", throwable)));

并且我想在loadData()之后应用筛选器。您可以在下一段代码中看到我的解决方案,但也许还有更好的方法?

 repository.loadData()
        .map(chatrooms -> {

            List<Chatroom> openChatrooms = new ArrayList<>();
            for (Chatroom chatroom: chatrooms){
                if (!chatroom.getBlocked().equals(IS_BLOCKED)) {
                    openChatrooms.add(chatroom);
                }
            }
            return openChatrooms;

        })
        .subscribe(chatrooms -> {
            view.showData(chatrooms);
            view.showEmptyState(chatrooms.size() == 0);
        }, throwable -> Log.i("OnError", "onLoadChatrooms ", throwable)));

共有2个答案

公冶泰
2023-03-14

您的解决方案是好的,如果不是“功能性”的风格。

通常情况下,我会写一些-

loadData()
        .flatMap(chatrooms -> { return Observable.from(chatrooms); })
        .filter(chatroom -> { return !chatroom.getBlocked().equals(IS_BLOCKED); })
        .toList();
司空温书
2023-03-14
 loadData()
     // Opther operations if any
     .filter((chatroom -> { return !chatroom.getBlocked().equals(IS_BLOCKED);})
     .toList()
     .subscribe(getObserver()); // implement your getObserver() method for observer.

这应该会有帮助。

 类似资料:
  • 我使用Backbone.js在页面上一次加载20个项目,当您向下滚动到底部时获得更多项目,直到没有剩余的项目可以从服务器获取。 同时,我希望在顶部有一个输入字段,当您键入名称时,它会过滤匹配的项目。 问题是,如果您尚未滚动到底部并获取完整集,那么输入过滤器将只匹配页面上当前的项目。 在技术和视觉上,将UI过滤与延迟加载项相结合的最佳解决方案是什么? 编辑:这里真正的场景是加载你的所有faceboo

  • 我需要过滤一个列表

  • 我正在使用谷歌表单的过滤功能,但无法按我想要的方式使用,已经3天了。。。 基本上,我有第1页,有一列“电子邮件”和一列“潜在客户ID”。表2具有相同的“潜在客户ID”,但已过滤。含义,第1页,其“顺序为1,2,3,4,5…”。。。第二张不是,像是2,4,5,23,41。。。我想在表1中找到正确的电子邮件地址,该地址在两个表中具有相同的Lead ID。我使用了Filter函数,它工作得非常好,因为它

  • 问题内容: 使用Java Stream时,映射后有时会出现空值。当前,当这些值需要省略时,我使用: 对于更实用的样式,可以快速编写一个小的辅助方法: 这样您就可以使用方法引用了: 我找不到这样的jdk方法,即使我怀疑它们中已经包含了一种。这里有其他方法吗?还是他们出于某种原因忽略了这一点? 问题答案: 您可以从Java8 SDK 使用Objects :: nonNull :

  • 有什么快速的方法可以过滤列表并获得值的索引吗? 我想拿到我找到的东西的索引?

  • 我有一个方法返回一个