【发布时间】:2021-08-15 23:32:33
【问题描述】:
我正在创建具有以下架构的应用程序:房间数据库 存储库 视图模型 片段。我想要实现的是通过带有一些给定变量的 Dao 对象通过 Repository 从 View Model 执行查询。我创建了用于从 Dao 对象的表中选择一些数据的查询:
@Query("SELECT * FROM meal_table WHERE mealDate = :date")
public LiveData<MealWithProducts> getMealWithProductsFromDate(String date);
然后我在 Repository 类中设置了固定值用于测试目的,例如:
MealWithProductsRepository.class
public class MealWithProductsRepository {
private final MealWithProductsDao mealWithProductsDao;
private final LiveData<MealWithProducts> mealWithProductsFromDate;
public MealWithProductsRepository(Application application){
AppDatabase db = AppDatabase.getDatabase(application);
mealWithProductsDao = db.mealWithProductsDao();
mealWithProductsFromDate = mealWithProductsDao.getMealWithProductsFromDate("15-08-2021");
}
public LiveData<MealWithProducts> getMealWithProductsFromDate() {
return mealWithProductsFromDate;
}
}
DiaryEntryViewModel.class
public class DiaryEntryViewModel extends AndroidViewModel {
private final MealWithProductsRepository mealWithProductsRepository;
private final LiveData<MealWithProducts> mealWithProductsFromDate;
public DiaryEntryViewModel(@NonNull Application application) {
super(application);
mealWithProductsRepository = new MealWithProductsRepository(application);
mealWithProductsFromDate = mealWithProductsRepository.getMealWithProductsFromDate();
}
public LiveData<MealWithProducts> getMealWithProductsFromDate() { return mealWithProductsFromDate; }
}
我已经测试了这个单一的案例并且它有效,但是我不知道如何将参数从 View Model 类传递到存储库,因为这个查询是在 Repository 构造函数中执行的,并且 View Model 中的 Repository 引用是在 View Model 中创建的构造函数。请您指出我应该如何进一步处理这个问题的方向。提前致谢!
【问题讨论】:
标签: android android-room android-jetpack android-viewmodel