如何使用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)));
您的解决方案是好的,如果不是“功能性”的风格。
通常情况下,我会写一些-
loadData()
.flatMap(chatrooms -> { return Observable.from(chatrooms); })
.filter(chatroom -> { return !chatroom.getBlocked().equals(IS_BLOCKED); })
.toList();
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 :
Id是SharePoint列表中的开箱即用字段。 我正在使用图形浏览器进行测试:https://developer.microsoft.com/en-us/graph/graph-explorer 我试过这些过滤器 https://graph.microsoft.com/v1.0/sites/root/lists/ba0dc64a-263c-44b6-8160-66a3034a1429/items
有什么快速的方法可以过滤列表并获得值的索引吗? 我想拿到我找到的东西的索引?