RxJava2可观察到的问题

时间:2018-10-01 10:32:57

标签: android rx-java2 greendao

我是RXJava2的新手,因此需要一些帮助,我必须实现收藏夹的功能,当用户单击fav时,它将被插入到greendo数据库中;而当他取消收藏同一事件时,它将被从greendo数据库中删除。

我能够插入并获取结果,但是不知道如何删除它。

以下代码中的这一行使我无效mDaoSession.getFavouriteDao().deleteByKey(favourite.getId());

这是说不兼容类型,然后我如何使可观察的对象与void返回类型兼容。

@Override
    public Observable<Long> deleteFavouriteEvent(Favourite favourite) {
        return Observable.fromCallable(new Callable<Long>() {
            @Override
            public Long call() throws Exception {
                return mDaoSession.getFavouriteDao().deleteByKey(favourite.getId());
            }
        });
    }

插入工作正常:

 @Override
    public Observable<Long> insertFavouriteEvent(Favourite favourite) {
        return Observable.fromCallable(new Callable<Long>() {
            @Override
            public Long call() throws Exception {
                return mDaoSession.getFavouriteDao().insert(favourite);
            }
        });
    }

2 个答案:

答案 0 :(得分:0)

@Delete / @Insert / @Update全部花费 Collection of Entity Entity 本身

您必须直接传递favourite对象而不是favourite.getId()

还要安排使用void作为返回类型的函数,请使用Completable而不是Observable / Flowable

答案 1 :(得分:0)

您可以使用Completable.fromAction代替Observable。

public Completable deleteFavouriteEvent(Favourite favourite) {
    return Completable.fromAction(new Action() {
        @Override
        public void run() throws Exception {
            mDaoSession.getFavouriteDao().deleteByKey(favourite.getId());;
        }
    });
}