Ich wollte Code für die Einfachheit und Lesbarkeit umgestalten und deshalb möchte ich den Code außerhalb der Klasse verschieben und ein Ergebnis an die Klasse zurückgeben, wenn die Methode aufgerufen wird.Wie senden Sie Json-Daten, die von der Retrofit onResponse-Methode an andere Klassen zurückgegeben werden?
Versuch:
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;
}
Ausgang: wenn ich Array-Liste auf Antwort außerhalb der verwendete gibt Nullwert.
aber wenn ich eine Methode aus einer Antwort aufgerufen und übergeben Sie das Ergebnis movieReview, als Parameter, es funktioniert gut.
Früher verwendete:
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());
}
});
}
}`
Ich glaube, du bist ein Udacity Student und das ist Beliebte Filme-II-Projekt zu tun. Wenn Sie sagen könnten, warum Sie Daten zwischen Klassen weitergeben, oder können Sie genauer sein? –
Ich wollte Code für Einfachheit und Lesbarkeit umgestalten und deshalb möchte ich den Code außerhalb der Klasse verschieben und ein Ergebnis in Klasse zurückgeben, wenn die Methode aufgerufen wird. – vicky