使用ViewModel和ID从ROOM DB访问数据

时间:2018-10-23 09:32:29

标签: android viewmodel dao android-room

假设我在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;
}
}

1 个答案:

答案 0 :(得分:2)

您需要使用Factory或Dagger2为ID注入ViewModel。或者,您可以使用公共方法来获取数据。

public LiveData<List<FormSet>> getAllFormSets(setId){
    return allFormSets = formDatabase.formSetDao().getAllFilledForms(setId);
}