使用 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);
}