【发布时间】:2018-10-23 09:32:29
【问题描述】:
假设我在 Room DB 中有一个数据列表。 设数据为:setId、formId、formName。 单个 setId 中可以有多个 formId。设 setId 1 包含 10 个表单,2 包含 5 个表单。
现在我想做的是,使用 ViewModel 中的 setId 从数据库中提取数据。
让我的道成为:
@Query("SELECT * FROM form WHERE setId = :id")
LiveData<List<Form>> getAllFilledForms(int id);
如何在 ViewModel 中实现此类操作。 我想检索所有设置 id 相同的表单列表,让 1.
编辑: ViewModel 类:
public class ListSetViewModel extends AndroidViewModel {
private final LiveData<List<FormSet>> allFormSets;
private FormDatabase formDatabase;
public ListSetViewModel(@NonNull Application application) {
super(application);
formDatabase = FormDatabase.getDatabase(application);
allFormSets = formDatabase.formSetDao().getAllFilledForms(setId);
}
public LiveData<List<FormSet>> getAllFormSets(setId){
return allFormSets;
}
}
【问题讨论】:
-
你的方法返回什么?你能指定你的代码的实际问题吗?
-
我的方法根据 setId 返回表单列表。我打算做的是,使用 setId 从 DB 获取表单列表。我对 ViewModel 中此类操作的实际实现感到困惑。是否可以通过在 ViewModel 中传递参数来使用 Android ViewModel 从数据库中检索数据?
-
不是已经将 setid 的值传递给您的 viewmodel 方法了吗?
getAllFormSets(setId)这个方法的参数是什么? -
当时我很困惑。我错过了什么吗?
-
您是如何从您的活动中调用该方法的?你应该已经传递了一个值来过滤你的数据。
标签: android viewmodel dao android-room