假设我在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;
}
}
答案 0 :(得分:2)
您需要使用Factory或Dagger2为ID注入ViewModel。或者,您可以使用公共方法来获取数据。
public LiveData<List<FormSet>> getAllFormSets(setId){
return allFormSets = formDatabase.formSetDao().getAllFilledForms(setId);
}