源代码:popularMovie
当我单击“收藏夹”菜单项时,我正在使用viewmodel检索数据并加载所有电影,但是当我单击
时,它不起作用并且不显示viewmodel的空间和DAO
private void setupViewModel() {
MainViewModel viewModel= ViewModelProviders.of(this).get(MainViewModel.class);
viewModel.getFavS().observe(this, new Observer<List<FavouritMovie>>() {
@Override
public void onChanged(List<FavouritMovie> Favourites) {
Log.d(TAG, "retrieve data from LiveDtata in viewModel");
for (int i=0;i<Favourites.size();i++) {
FavouritMovie mov = new FavouritMovie(Favourites.get(i).getId(),
Favourites.get(i).getTitle(),
Favourites.get(i).getReleaseDate(),
Favourites.get(i).getVoteAverage(),
Favourites.get(i).getPopularity(),
Favourites.get(i).getOverview(),
Favourites.get(i).getPosterPath(),
Favourites.get(i).getBackdropPath()
);
Favourites.add(mov);
}
adapter.setTasks(Favourites);
}
});
//this method i call when i click on favorites menu item
我希望将所有商店的电影加载到数据库中
答案 0 :(得分:0)
您无法在if(snapshot.hasData && !snapshot.hasError) {
//rest of your code
}
else {
//show progress indicator or error...
}
回调函数中更改数据。
您必须在外部使用observe
,insert
或update
ViewModel函数进行此操作。
使用这些方法将delete
函数称为AFTER,尤其是用于更新适配器列表的函数。
onChanged
要插入新数据,请使用 MainViewModel viewModel= ViewModelProviders.of(this).get(MainViewModel.class);
viewModel.getFavS().observe(this, new Observer<List<FavouritMovie>>() {
@Override
public void onChanged(List<FavouritMovie> Favourites) {
adapter.setTasks(Favourites);
}
});
。