我想从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