2 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
最簡(jiǎn)單的方法可能是聲明一個(gè)函數(shù),
void accessArrayList(ArrayList<DanceSchool> danceSchool){
//do stuff with the values
}
并在里面調(diào)用它c(diǎn)all.enqueue
call.enqueue(new Callback<List<DanceSchool>>() {
@Override
public void onResponse(....) {
........
List<DanceSchool> danceSchools = response.body();
accessArrayList(danceSchools);
.......
}
}

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
重點(diǎn)是:現(xiàn)在您正在進(jìn)行異步調(diào)用。您正在請(qǐng)求一些信息,當(dāng)該信息已編譯并準(zhǔn)備就緒時(shí),onResponse()將調(diào)用該方法。只有這樣,該列表才能從傳入的響應(yīng)正文中填充。
因此,您可以做的是:在您的封閉類(lèi)中有另一個(gè)方法,例如updateList(),然后簡(jiǎn)單地從您的onResponse()實(shí)現(xiàn)中調(diào)用該方法。
除此之外,您可能希望將異步調(diào)用變成同步調(diào)用。然后,相反,您使用execute()等待結(jié)果進(jìn)來(lái)(例如,請(qǐng)參見(jiàn)此處)。但是你仍然需要有一個(gè)回調(diào)方法來(lái)調(diào)用。
或者,您可以在封閉類(lèi)中有一個(gè)字段,例如
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());
添加回答
舉報(bào)