使用 ViewModel 和 ID 从 ROOM DB 访问数据
Accessing data from ROOM DB using ViewModel and ID
假设我在 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.
编辑:
视图模型 Class:
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;
}
}
您需要通过 Factory 或 Dagger2 为您的 ViewModel 注入一个 ID。或者您可以使用 public 方法来获取数据。
public LiveData<List<FormSet>> getAllFormSets(setId){
return allFormSets = formDatabase.formSetDao().getAllFilledForms(setId);
}
假设我在 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.
编辑: 视图模型 Class:
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;
}
}
您需要通过 Factory 或 Dagger2 为您的 ViewModel 注入一个 ID。或者您可以使用 public 方法来获取数据。
public LiveData<List<FormSet>> getAllFormSets(setId){
return allFormSets = formDatabase.formSetDao().getAllFilledForms(setId);
}