2016-09-25 83 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();