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());
添加回答
舉報