2 回答
TA贡献1744条经验 获得超4个赞
最简单的方法可能是声明一个函数,
void accessArrayList(ArrayList<DanceSchool> danceSchool){
//do stuff with the values
}
并在里面调用它call.enqueue
call.enqueue(new Callback<List<DanceSchool>>() {
@Override
public void onResponse(....) {
........
List<DanceSchool> danceSchools = response.body();
accessArrayList(danceSchools);
.......
}
}
TA贡献2080条经验 获得超4个赞
重点是:现在您正在进行异步调用。您正在请求一些信息,当该信息已编译并准备就绪时,onResponse()将调用该方法。只有这样,该列表才能从传入的响应正文中填充。
因此,您可以做的是:在您的封闭类中有另一个方法,例如updateList(),然后简单地从您的onResponse()实现中调用该方法。
除此之外,您可能希望将异步调用变成同步调用。然后,相反,您使用execute()等待结果进来(例如,请参见此处)。但是你仍然需要有一个回调方法来调用。
或者,您可以在封闭类中有一个字段,例如
List<DanceSchool> danceSchools
...
private void getSchoolList() {
final Call<List<DanceSchool>> call = ...
call.enqueue(new Callback<List<DanceSchool>>() {
@Override
public void onResponse(Call<List<DanceSchool>> call, Response<List<DanceSchool>> response) {
...
danceSchools.addAll(response.body());
添加回答
举报
