Модель представления помогает нам предоставлять данные между хранилищем и пользовательским интерфейсом.Для прямого взаимодействия с базой данных комнат мы используем репозиторий.Как только мы получим данные из репо, мы можем выполнять все виды вычислений (т.е. сортировку, фильтрацию и т. Д.) В ViewModel.
Для отображения данных из базы данных мы используем наблюдателя, который будет наблюдать за изменениями данных, LiveData во ViewModel.
Мы используем ViewModelProvider, который собирается создать ViewModel для нас.Нам нужно соединить нашу ViewModel с ViewModelProvider, а затем в методе onChanged мы всегда получаем наши обновленные данные, которые мы можем отобразить на экране.
Например,Мы хотим получить некоторую запись из нашей базы данных.
Для этого нам нужно создать репозиторий, который будет взаимодействовать напрямую с базой данных или содержать логику для извлечения данных из базы данных.
public class ABCRepository {
@Inject
DrugsDao mABCDao;
@Inject
public ABCRepository(){
}
public LiveData<List<NameModel>> getNameByLetter(String letter) {
return mABCDao.getName(letter);
}
}
Сейчас в View Model
public class SearchViewModel extends ViewModel {
@Inject
ABCRepository mABCRepository;
LiveData<List<GlobalSearchModel>> getNameList(String queryText) {
MutableLiveData<List<GlobalSearchModel>> mGlobalSearchResults = new
MutableLiveData<>();
List<NameModel> synonymsNameList=mABCRepository.getNameByLetter(queryText);
new Thread(() -> {
List<GlobalSearchModel> globalSearchModelList =
mABCRepository.getNameByLetter(queryText)
// this is where you can perform any action on list . either sorting or.
filtering and then return the new list to your UI.
mGlobalSearchResults.postValue(globalSearchModelList);
}).start();
return globalSearchModelList;
}
}
В своем фрагменте или деятельности вы можете наблюдать эти данные,
getViewModel().getAllCountries().observe(this, this::addSearchResultsInRecycler);
Надеюсь, это полезно.Хотя и не объяснил, хорошо, но вы можете иметь ссылку из
https://medium.com/@skydoves/android-mvvm-architecture-components-using-the-movie-database-api-8fbab128d7