UPDATE:Multiple Параметры запроса с асинхронными вызовами Модернизированного
Я узнал, что я ищу, чтобы сделать, это использовать Async в Модернизированном с множественными запросами тоже. Я обновил свой код, но я не могу получить асинхронный запрос.
Я использую «Модернизацию» для совершения моих данных в базе данных фильмов и необходимости изменения порядка сортировки в зависимости от пользовательских настроек. Я не понимаю, как добавить эту функциональность в свой интерфейс.
sort_by = highest_rating.desc
или
sort_by = popularity.desc
Интерфейс:
public interface MovieDatabaseApiCient {
@GET("/3/discover/movie")
void getData(@Query("api_key") String apiKey, @Query("sort_by") String sortByValue, Callback<MovieDbModel> response);
}
ОБНОВЛЕНО API-ИНТЕРФЕЙС:
public interface MovieDatabaseApiCient {
@GET("/3/discover/movie?sort_by=popularity.desc&api_key=xxxxxxx")
void getMoviesByPopularityDesc(Callback<MovieDbModel> response);
@GET("/3/discover/movie?sort_by=vote_average_desc&api_key=xxxxxxxx")
void getMoviesByVotingDesc(Callback<MovieDbModel> response);
}
ОБНОВЛЕНО ВЫЗОВ ДАННЫХ ДЛЯ РАБОТЫ:
private void makeDataCall(String sortPreference) {
final RestAdapter restadapter = new RestAdapter.Builder().setEndpoint(ENDPOINT_URL).build();
MovieDatabaseApiCient apiLocation = restadapter.create(MovieDatabaseApiCient.class);
if (sortPreference.equals(this.getString(R.string.sort_order_popularity))){
apiLocation.getMoviesByPopularityDesc (new Callback<MovieDbModel>() {
@Override
public void success(MovieDbModel movieModels, Response response) {
movieDbResultsList = movieModels.getResults();
MoviesGridViewAdapter adapter = new MoviesGridViewAdapter(getApplicationContext(), R.layout.movie_gridview_item, movieDbResultsList);
gridView.setAdapter(adapter);
}
@Override
public void failure(RetrofitError error) {
Log.d("ERROR", error.toString());
Toast.makeText(getApplicationContext(), "Error: " + error.toString(), Toast.LENGTH_SHORT).show();
}
});
} else {
apiLocation.getMoviesByVotingDesc( new Callback<MovieDbModel>() {
@Override
public void success(MovieDbModel movieModels, Response response) {
movieDbResultsList = movieModels.getResults();
MoviesGridViewAdapter adapter = new MoviesGridViewAdapter(getApplicationContext(), R.layout.movie_gridview_item, movieDbResultsList);
gridView.setAdapter(adapter);
}
@Override
public void failure(RetrofitError error) {
Log.d("ERROR", error.toString());
Toast.makeText(getApplicationContext(), "Error: " + error.toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
Мой призыв к данным:
private void makeDataCall (String apiKey, String sortPreference) {
final RestAdapter restadapter = new RestAdapter.Builder().setEndpoint(ENDPOINT_URL).build();
MovieDatabaseApiCient apiLocation = restadapter.create(MovieDatabaseApiCient.class);
apiLocation.getData(apiKey, sortPreference, new Callback<MovieDbModel>){
@Override
public void success(MovieDbModel movieModels, Response response) {
movieDbResultsList = movieModels.getResults();
MoviesGridViewAdapter adapter = new MoviesGridViewAdapter(getApplicationContext(), R.layout.movie_gridview_item, movieDbResultsList);
gridView.setAdapter(adapter);
}
@Override
public void failure(RetrofitError error) {
Log.d("ERROR", error.toString());
Toast.makeText(getApplicationContext(), "Error: " + error.toString(), Toast.LENGTH_SHORT).show();
}
});
}
Я нашел способ сделать Синхронно, но не асинхронно.
Ваш код уже асинхронный – BNK
Я понимаю, что это Async, но он не компилируется. Я получаю ошибку кода, начиная с блоков onsuccess и отказов. Он не знает параметр moviemodels. – taraloca