2017-04-09 16 views
0

Users 테이블의 모든 사용자로부터 일부 데이터를 가져오고 싶습니다. 나는 Data paging을 사용해야 함을 발견했다. >https://backendless.com/feature-47-loading-data-objects-from-server-with-sorting/ 기능, 47에 설명 된대로 나는 (나는 또한 정렬해야하기 때문에) 같은 코드를 작성했지만, 다음이 코드는 첫 번째 페이지에서 데이터를 소요 알아 냈어요. 그런 다음 크기가 0이 아닐 때까지 다음 페이지로 이동하여 읽어야한다고 결정했습니다. 내가 대신 one.nextPage(this)의 AsyncCallback과 nextPage 방법을 사용할 필요가 있다고 생각하지만 난 그렇게 할 경우,이 방법은 루프와 못했습니다모든 페이지에서 데이터를 검색하는 방법은 무엇입니까?

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 







      } 







    } 

: 다음, 당신은 내 잘못 솔루션을 볼 수 있습니다. 그렇다면 문제를 어떻게 해결할 수 있습니까?

실제로 솔루션의 문제를 찾을 수없는,하지만 난이 사용하여 문제를 해결
+0

이벤트를 사용해보세요. 그래서 기본적으로 첫 번째 호출이 완료되면 next_page_token을 호출 클래스에 전달합니다. 다음 토큰으로 다음 http 요청을 시작하십시오. 그것도 당신이 루프를 수행하지 않을 것을 의미합니다. – Eenvincible

답변

0

:

INT 어린 아이 = response.getTotalObjects()

이 첫 번째 응답에서 개체의 총 수를 얻을 수를 . 그런 다음 객체 목록에 size = tot이 올 때까지 루프를 사용하십시오. 각 루프에서 오프셋을 설정하는 쿼리를 만듭니다. 오프셋은 현재 목록 크기와 동일합니다.

+0

'getTotalObjects()'메소드가 table의 모든 레코드 양을 반환한다는 것을 이해했습니다.하지만 왜 필요합니까? 이제 저는 테이블에 17 명의 사용자가 있으며 모든 것을 처리하려고합니다. 첫 페이지의 크기는 10이며 10 명의 사용자를 얻는다는 의미입니다. 7 명 남은 사용자. 그런 다음 나머지 7 명의 사용자가있는 다음 페이지를 가져 오려고합니다. 어떻게 다음 페이지로 갈 수 있습니까? 당신의 대답에 따르면, 필자는 코드를 작성했으나 무한 루프가 있기 때문에 잘못된 것 같습니다. 도와주세요. 'while (response.getCurrentPage(). size> 0) { – abay

+0

} while (one.getCurrentPage(). size()> 0) { offset + = one.getCurrentPage(). size(); Iterator it = one.getCurrentPage(). iterator(); 동안 (it.hasNext()) { // 뭔가 } one.getPage (10, 오프셋이)이 라인이 잘못된처럼 // 것 같다, 왜? 당신은 설정할 수 있습니다 } ' – abay

+0

는하여 QueryOptions과는 총 개체와 동일한 얻을 때까지 오프셋 때마다 증가보다 오프셋. 내가 페이징 시스템이 정말 대신 10 –