Мне нужен код рефакторинга для простоты и удобочитаемости, поэтому я хочу переместить код вне класса и вернуть результат в класс всякий раз, когда вызывается метод.Как отправить данные Json, возвращаемые методом Retrofit onResponse другому классу?
Попытка:
ArrayList<MovieReview> movieReview;
public ArrayList<MovieReview> getReviews(String id) {
if (NetworkUtil.isNetworkConnected(getActivity())) {
ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);
Call<MovieReviewResponse> call = null;
call = apiService.getMovieReviews(id, BuildConfig.THE_MOVIE_DB_API_KEY);
call.enqueue(new Callback<MovieReviewResponse>() {
@Override
public void onResponse(Call<MovieReviewResponse> call, Response<MovieReviewResponse> response) {
movieReview= (ArrayList<MovieReview>) response.body().getMovieReviews();
}
@Override
public void onFailure(Call<MovieReviewResponse> call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
return movieReview;
}
Выход:, если я использовал список массива вне на ответ дает нулевое значение.
но если я вызвал метод из ответа и передал результат movieReview, в качестве параметра он отлично работает.
Ранее использовали:
public void getReviews(String id) {
if (NetworkUtil.isNetworkConnected(getActivity())) {
ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);
Call<MovieReviewResponse> call = null;
call = apiService.getMovieReviews(id, BuildConfig.THE_MOVIE_DB_API_KEY);
call.enqueue(new Callback<MovieReviewResponse>() {
@Override
public void onResponse(Call<MovieReviewResponse> call, Response<MovieReviewResponse> response) {
movieReview = (ArrayList<MovieReview>) response.body().getMovieReviews();
setData(movieReview);
}
@Override
public void onFailure(Call<MovieReviewResponse> call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
}`
Я предполагаю, что вы студент Udacity и это популярные фильмы проекта II. Если бы вы могли понять, почему вы передаете данные между классами или просто можете быть более конкретными? –
Я хотел реорганизовать код для простоты и удобочитаемости, поэтому я хочу переместить код вне класса и возвращать результат в класс всякий раз, когда вызывается метод. – vicky