我尝试从通过改造获得的网址返回列表。它有效,我得到了数据,但它不会返回。
这是我的代码
public List<MovieResponse> loadCourses() {
ArrayList<MovieResponse> list = new ArrayList<>();
ApiServices apiService =
NetworkClient.getRetrofitClient().create(ApiServices.class);
Call<MovieResult> call = apiService.getMovies();
call.enqueue(new Callback<MovieResult>() {
@Override
public void onResponse(Call<MovieResult> call, Response<MovieResult> response) {
if (response.body() != null) {
ArrayList<MovieResponse> movies = new ArrayList<>();
movies = response.body().getResults();
Log.d("",""+movies);
list.addAll(movies);
Log.d("",""+list);
}
}
@Override
public void onFailure(Call<MovieResult> call, Throwable t) {
// Log error here since request failed
Log.e("error", t.toString());
}
});
return list;
}
当我打印 onResponse
内的列表时它有效并且有数据。但是当我返回它或尝试在 onResponse
之外打印列表时例如下面ArrayList<MovieResponse> list = new ArrayList<>();
它不显示数据。
请帮忙看看到底出了什么问题。我真的很感激。
最佳答案
最简单的方法是定义您的 movies
直接在 Activity 或 Fragment 内部列出(换句话说,类的字段成员)。
从异步方法返回数据不是一个好主意。
更改 loadCourses
的返回类型方法void
并实例化提交的 movies
里面onResponse()
.
public class SomeActivity extends AppCompatActivity {
private ArrayList<MovieResponse> movies = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_some);
}
public void loadCourses() {
ApiServices apiService =
NetworkClient.getRetrofitClient().create(ApiServices.class);
Call<MovieResult> call = apiService.getMovies();
call.enqueue(new Callback<MovieResult>() {
@Override
public void onResponse(Call<MovieResult> call, Response<MovieResult> response) {
if (response.body() != null) {
movies = response.body().getResults();
...
}
}
@Override
public void onFailure(Call<MovieResult> call, Throwable t) {
...
}
});
}
}
关于java - 如何通过改造从列表函数中调用 return 的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59534588/