Доступ к данным из БД ROOM с использованием ViewModel и ID - PullRequest
0 голосов
/ 23 октября 2018

Предположим, у меня есть список данных в комнате DB.Пусть данные будут: setId, formId, formName.В одном наборе может быть несколько formId.Пусть setId 1 содержит 10 форм, 2 содержит 5 форм.

Теперь я хочу извлечь данные из БД, используя setId в ViewModel.

Пусть мой дао будет:

@Query("SELECT * FROM form WHERE setId = :id")
LiveData<List<Form>> getAllFilledForms(int id);

Как я могу реализовать такое действие во ViewModel.Я хочу получить весь список форм, в которых установлен идентификатор, пусть 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 голосов
/ 26 октября 2018

Вам необходимо ввести в вашу ViewModel идентификатор от Фабрики или Dagger2.Или вы можете использовать публичный метод для получения данных.

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