Если вы хотите использовать RxJava с Room, вы можете изменить функцию insert
, чтобы она возвращала RxJava Single wrapping a Long
, например:
@Insert
Single<Long> insert(User user);
Таким образом, вы можете просто подписаться на этот Single
, и вы получите идентификатор как Long с чем-то вроде этого:
db.userDao().insert(user)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(Long aLong) {
// aLong is the id
}
@Override
public void onError(Throwable e) {
}
});