Так что я почти уверен, что я немного растерялся.
Ожидаемое поведение:
Получить данные из API -> сохранить их влокальная БД -> загрузить данные из локальной БД и отобразить их
Прежде всего в моем Fragment
я вызываю функцию, которая делает это:
mLiveData = viewModel.fetchAllCategories(getString(R.string.lang_code))
mCategoryLiveData!!.observe(this, Observer<Array<Category>> { it ->
if (it != null) {
this@CategoryListFragment.allCategories = SparseArray(it.size)
for (category in it) {
allCategories[category.id] = category
}
displayedCategory = allCategories[1]
this@CategoryListFragment.mLoadingCircle.visibility = View.GONE
this@CategoryListFragment.displayCategoryChildren()
}
})
fetchAllCategories вызывает aфункция в ViewModel, которая вызывает эту функцию:
fun getAllCategoriesFromAPI(language: String): Flowable<Array<Category>> {
return service.getAllCategories(language)
.doOnNext {
Log.e("Repository", "Fetched ${it.size} Categories from the API ")
storeCategoriesInDb(it)
}
}
Однако функция displayCategoryChildren()
срабатывает до завершения onNext, что приводит к ошибке, поскольку данные, которые приложение должно получить из БД, не сохраняются тампока.
Если это имеет какое-либо отношение, я также могу опубликовать функцию в ViewModel