我的数据库正在填充中,并用于创建viewModel。调试时似乎一切都按预期工作,但是当我运行代码时,我得到了一个emoty recyclerView
我的方法从数据库中获取MovieItems
public Single<List<MovieListItem>> getFavoriteslist(Context context) {
return Single.fromCallable(() -> getFavoritesFromDb(context))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
private List<MovieListItem> getFavoritesFromDb(Context context) {
List<Movie> favoriteMovies = Database.getAppDatabase(context).movieDao().getAll();
List<MovieListItem> favoriteList = new ArrayList<>();
for(int i = 0; i < favoriteMovies.size(); i++) {
MovieListItem favoriteListItem = new MovieListItem();
Movie movieObject = favoriteMovies.get(i);
favoriteListItem.setId(movieObject.getMovieId());
favoriteListItem.setImageUrl(movieObject.getPosterPath());
favoriteListItem.setTitle(movieObject.getMovieName());
favoriteListItem.setVoteCount(movieObject.getVoteCount());
favoriteListItem.setVoteAverage(movieObject.getVoteAverage());
favoriteListItem.setVotePopularity(movieObject.getPopularity());
favoriteListItem.setOverview(movieObject.getOverview());
favoriteListItem.setReleaseDate(movieObject.getReleaseDate());
favoriteList.add(favoriteListItem);
}
return favoriteList;
}
这里是将回收者视图中的旧数据替换为新数据的方法:
if (id == R.id.action_favorite) {
mCurrentSort = SORT_FAVORITE;
mCompositDisposable.clear();
mCompositDisposable.add(movieGridViewModel.getFavoriteslist(getContext()).subscribe(movieListItems ->
{
if (mMovieGridAdapter != null) {
mMovieGridAdapter.clearAllMovieData();
mMovieGridAdapter.loadFavoriteMovies(movieListItems);
mMovieGridAdapter.notifyDataSetChanged();
} else {
mMovieGridAdapter = new MovieGridAdapter(getActivity(), movieListItems);
mMovieGridAdapter.setClickListener(this);
mRecyclerView.setAdapter(mMovieGridAdapter);
mMovieGridAdapter.notifyDataSetChanged();
}
}, throwable -> {
Toast.makeText(getContext(), "no internet connection", Toast.LENGTH_LONG).show();
}));
}
似乎适配器具有数据,但是由于某种原因未更新UI。