2016-09-25 77 views
0

我想在一個循環中調用我的JSON類,總是使用另一個URL,並且總是將結果傳遞給RecyclerView。問題是我不能把這個方法放到循環中,因爲循環不會等待回調......任何想法如何做到這一點?我該如何等待回調?

final JSON json = new JSON("http://1956.osaarchivum.org/api/items?collection=13&page=" + page + "&per_page=10", SzabadEuMusorokViewActivity.this); 
    json.mJSONInterface = new JSONInterface() { 
     @Override 
     public void startActivityJSON() { 
      mAdapter.add((ArrayList<Collection>) json.getCollections()); 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        mAdapter.notifyDataSetChanged(); 
       } 
      }); 
     }}; 

而且我希望在調用被執行後始終增加頁面變量。我用一個Lopp嘗試了它,但它不起作用。

+0

首先,向我們展示您嘗試過的一些代碼。其次,嘗試使用'Handler.post()'併爲重複調用設置一個間隔到'Handler'。它是'android.os.Handler' – rupinderjeet

+0

我編輯這個問題,一開始就沒有代碼抱歉。 – Androidguy

回答

0

總是從您提到的回調中調用下一個呼叫。跟蹤您的網址數組中的哪個位置。

這樣的事情(未測試的代碼!)

class JsonFetcher { 
    int _start, _end, _current; 
    public JsonFetcher(int start, int end) { 
     _start=start;_end=end;_current=start-1; 
     fetch_next() 
    } 
    public void fetch_next() { 
    _current += 1; 
    if (_current < end) 
     // Trigger your JSON fetch here and have it call fetch_next in the callback 
    } 

};

+0

我添加了一些代碼,可以再次檢查一下嗎? – Androidguy

+0

所以你說,我應該爲此做一個方法,並總是調用自己的另一個URL? – Androidguy

+1

哦,我的fckn ohohoho ooooooooh它的作品。我不敢相信這大聲笑。非常感謝:D。我很愚蠢,我正在爲此工作2天:DD – Androidguy

0

這可能幫助:

在您的AsyncTask加:

private final ProgressDialog dialog = new ProgressDialog(YourActivity.this); 
在preExecute

()方法:

this.dialog.setMessage("Processing..."); 
this.dialog.show(); 
在onPostExecute

(虛空結果)方法添加:

dialog.dismiss();