在一個回圈中訪問網路獲取Json資料,在回呼函式中決議Json資料并給配接器賦值,在RecycleView中顯示資料,結果發現只能顯示最后的一項資料,也就是沒有顯示4項資料,跟蹤回呼函式內部,發現只執行了一次。請問該如何處理呢?
代碼:
for (int i = 0; i < 4; i ++) {
OneNetApi.setAppKey(KeyList.get(i));
OneNetApi.querySingleDevice(IDList.get(i), new OneNetApiCallback() { // 回呼函式
@Override
public void onSuccess(String response) {
JsonObject resp = new JsonParser().parse(response).getAsJsonObject();
int errno = resp.get("errno").getAsInt();
if (0 == errno) {
mDeviceItems.add(resp.get("title").getAsString());
mAdapter.setNewData(mDeviceItems);
}
}
@Override
public void onFailed(Exception e) {
……
}
uj5u.com熱心網友回復:
這個肯定有4次請求,你可以列印一下4次回傳的結果,你配接器里setNewData(mDeviceItems)方法怎么寫的,我懷疑你是直接賦值的,不是add的uj5u.com熱心網友回復:
請求是4次沒錯,但是請求是在主執行緒中執行的,基本沒有時間間隔,所以在query的時候,一看有有請求就直接cancel了上次的請求,因此就只會有最后一次的請求。我不明白為什么一個list的資料需要請求4次,這是超爛的設計。非要這么寫的話,可以增加請求的間隔,等上一個請求結束了再開始第二個,方法的話有很多種,計數器,變數啥的都可以。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/118432.html
標籤:Android
