如何在使用viewmodel后使更改的数据出现

时间:2019-05-22 01:54:08

标签: java android

源代码: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 

我希望将所有商店的电影加载到数据库中

1 个答案:

答案 0 :(得分:0)

您无法在if(snapshot.hasData && !snapshot.hasError) { //rest of your code } else { //show progress indicator or error... } 回调函数中更改数据。 您必须在外部使用observeinsertupdate 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); } });