我想從Users
表中的所有用戶那裏獲取一些數據。我發現我必須使用Data paging
。我寫了特性47->https://backendless.com/feature-47-loading-data-objects-from-server-with-sorting/(因爲我也 必須排序)中描述的相同的代碼,但後來我發現這個代碼僅從第一頁獲取數據。然後,我決定必須進入下一頁並閱讀它,直到它的大小不等於零。下面,你可以看到我的錯解:如何從所有頁面檢索數據?
QueryOptions queryOptions = new QueryOptions();
List<String> list = new ArrayList<String>() ;
list.add("point DESC") ;
queryOptions.setSortBy(list);
BackendlessDataQuery backendlessDataQuery = new BackendlessDataQuery();
backendlessDataQuery.setQueryOptions(queryOptions);
Backendless.Data.of(BackendlessUser.class).find(backendlessDataQuery, new AsyncCallback<BackendlessCollection<BackendlessUser>>() {
@Override
public void handleResponse(BackendlessCollection<BackendlessUser> one) {
while(one.getCurrentPage().size()>0) {
Iterator<BackendlessUser> it = one.getCurrentPage().iterator();
while (it.hasNext()) {
//something here,not so important
}
one.nextPage(this);// here I want to get next page,
//but seems like it does not work, cause my loop became infinite
}
}
我認爲我必須使用下一頁法的AsyncCallback代替one.nextPage(this)
,但如果我這樣做,方法無法循環跟上。那麼,我該如何解決我的問題?
嘗試使用事件;所以基本上,當第一次調用完成時,將next_page_token傳遞給調用類;然後用該令牌啓動下一個http請求;這也意味着你不會做循環 – Eenvincible