how to download data with retrofit so that you can download the desired page from api
Я хочу, чтобы при вызове метода getData (int num) данные из моей базы данных удалялись, так что новые данные загружаются и сохраняются в базе данных, но возникает ошибка и загружается только первая страница, хотя я увеличил page ++ в слушателе в конце и снова вызвал метод, я хотел бы узнать ваше мнение, спасибо. Вот мои классы для реализации
MainActivity.class
viewModel.getMovies().observe(this, new Observer<List<Movie>>() {
@Override
public void onChanged(List<Movie> movies) {
if(page==1) {
adapter.setMovies(movies);
}
}
});
menuAdapter.setItemClickListener(new HorizontalMenu.ItemClickListener() {
@Override
public void getClickedItem(int i) {
switchBox(i);
}
});
adapter.setOnPosterClickListener(new MovieAdapter.OnPosterClickListener() {
@Override
public void onPosterClick(int i) {
Movie movie = adapter.getMovies().get(i);
Intent intent = new Intent(MainActivity.this, DetailActivity.class);
intent.putExtra("movieId", movie.getId());
startActivity(intent);
}
});
adapter.setGetEndListener(new MovieAdapter.OnGetEndListener() {
@Override
public void getEndListener() {
if (!isLoading) {
Toast.makeText(MainActivity.this, "End", Toast.LENGTH_LONG).show();
getData(numb);
}
}
});
}
public void getData(int i) {
viewModel.loadData(i, page);
viewModel.setOnStartLoadingListener(new MovieViewModel.onStartLoadingListener() {
@Override
public void onStartLoading() {
isLoading = true;
}
});
viewModel.setOnFinishLoadingLisneter(new MovieViewModel.onFinishLoadingLisneter() {
@Override
public void onFinishLoading() {
isLoading = false;
page++;
}
});
}
ViewModel.class
public void loadData(int i, int page) {
String sortType = null;
if (i == 0) {
sortType = POPULARITY;
} else if (i == 1) {
sortType = RATED;
}
MovieDownloadFactory movieDownloadFactory = MovieDownloadFactory.getMovieDownloadFactory();
MovieFactoryService movieFactoryService = movieDownloadFactory.getMovieFactoryService();
disposable = movieFactoryService.getResultsResponse(API_KEY, LANGUAGE, sortType, VOTES, page)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResultsResponse>() {
@Override
public void accept(ResultsResponse resultsResponses) throws Exception {
if (onStartLoadingListener != null) {
onStartLoadingListener.onStartLoading();
}
if (resultsResponses != null) {
if (page == 1) {
deleteAllMovies();
}
insertAllMovies(resultsResponses.getMovies());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.i("WrongMessage", Objects.requireNonNull(throwable.getMessage()));
}
});
compositeDisposable.add(disposable);
}