我有一个带有查找方法的房间DAO,该方法返回一个LiveData。
在我的存储库中,我想调用该Dao方法并返回LiveData对象。
在我的ViewModel中,我将LiveData称为存储库,依此类推。
我的道:
@Query("SELECT * FROM user where userId = :userId)
LiveData<User> loadUser(String userId);
现在在我的存储库中,我将此称为Dao,但是对于userId,我必须订阅会话。
public LiveData<User> loadUser() {
session.getSubject().subscribe(session -> {
db.getDb().userDao().loadUser(session.userId);
//TODO: How I can return here my LiveData???
});
}
我该如何处理这样的问题?如何在存储库方法中返回此LiveData对象。
尝试像这样使用MediatorLiveData
:
public LiveData<User> loadUser() {
MediatorLiveData<User> userLiveData = new MediatorLiveData<>();
session.getSubject().subscribe(session -> {
userLiveData.addSource(db.getDb().userDao().loadUser(session.userId), user -> {
userLiveData.setValue(user);
});
});
return userLiveData
}