首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Single<Boolean>过滤

使用Single<Boolean>过滤
EN

Stack Overflow用户
提问于 2019-04-20 23:45:09
回答 1查看 529关注 0票数 0

我想过滤一个流(),过滤器必须提供一个谓词我如何使用RxJava实现这一点,我正在使用房间持久性数据库,如果数据库还没有包含新字段,我想添加它们,我的问题是使用doesDatabaseContainSong()方法。

我是RX Java的新手,代码是Kotlin和Java的混合

代码语言:javascript
复制
    // 1. ADD NEW SONGS TO DATABASE
songs.stream()
        .filter(song -> !doesDatabaseContainSong(song, mViewModel))
        .forEach(this::addSongToDatabase);

我希望下面的函数(DoesDatabaseContainSong)返回一个布尔值,而不是返回Single< Int >

代码语言:javascript
复制
public static boolean doesDatabaseContainSong(Song song, SongViewModel model) {
    int result = model.doesDatabaseContainSong(song.getId(), Type.GOOGLE_DRIVE.name());
    return result != 0;
}

视图模型

代码语言:javascript
复制
fun doesDatabaseContainSong(mId: String): Single<Int> {
    return repository.doesDatabaseContainSong(mId)
}

存储库

代码语言:javascript
复制
fun doesDatabaseContainSong(mId: String): Single<Int> {
    return songDao.doesDatabaseContainSong(mId)
}

“道”

代码语言:javascript
复制
@Query("SELECT COUNT(id) from song_table WHERE id = :mId")
fun doesDatabaseContainSong(mId: String): Single<Int>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 17:57:10

DAO (已将返回类型更改为布尔值)

代码语言:javascript
复制
@Query("SELECT COUNT(id) from song_table WHERE id = :mId")
fun doesDatabaseContainSong(mId: String): Single<Boolean>

存储库(将返回类型更改为布尔值)

代码语言:javascript
复制
fun doesDatabaseContainSong(mId: String): Single<Boolean> {
    return songDao.doesDatabaseContainSong(mId)
}

视图模型(已将返回类型更改为布尔值)

代码语言:javascript
复制
fun doesDatabaseContainSong(mId: String): Single<Boolean> {
    return repository.doesDatabaseContainSong(mId)
}

(已将返回类型更改为布尔值)

代码语言:javascript
复制
public static Single<Boolean> doesDatabaseContainSong(Song song, SongViewModel model) {
    return model.doesDatabaseContainSong(song.getId(), Type.GOOGLE_DRIVE.name());
}

现在是最终的代码:

代码语言:javascript
复制
songs
    .stream()
    .flatMap(doesContainSong -> doesDatabaseContainSong(song, mViewModel))
    .filter(doesContainSong -> !doesContainSong)
    .forEach(this::addSongToDatabase);

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55775113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档