2016-07-07 5 views
0

잘 나는 너무 구체적이고 (그것을 위해 너무 열심히 노력) 명확한 제목없는 사과, 그래서 나는 이제 위의 함수는의 요청에 따라 10 items를 가져 오는되는이 기능을자동화 된 기능을 제어 수동

public void fetchData(){ 
    dataQuery.setPageSize(10); // fetch 10 items per request 
    final boolean[] firstResponse = {true}; 
    final CountDownLatch latch = new CountDownLatch(1); 

    // a callback of fetching data from server 
    Backendless.Data.of(Note.class).find(dataQuery, new AsyncCallback<BackendlessCollection<Note>>() { 
     @Override 
     public void handleResponse(BackendlessCollection<Note> notes) { // here we have the response of request 

      /// loop for requesting for items until all of them is fetched////// 
      if(firstResponse[0]) 
      { 
       firstResponse[0] =false; 
      } 
      int size = notes.getCurrentPage().size(); 
      if(size > 0) 

       notes.nextPage(this); 

      else 
       latch.countDown(); 

      ////////////////////////////////// 

     /// do whatever I want with the fetched data 


} 

     @Override 
     public void handleFault(BackendlessFault fault) {// here we have the error of request 

      swipeToReload.setRefreshing(false); 
      Toast.makeText(getContext(), "" + fault.getMessage(), Toast.LENGTH_LONG).show(); 

     } 
    }); 
    } 

이 이 루프는 모든 데이터가 검색 될 때까지 실행됩니다. 원하는 것은이 루프를 수동으로 실행하는 것입니다. 버튼을 클릭하면 처음 10 개 항목을로드 한 다음 다시 요청하지 않고 수동으로 작업을 수행합니다. 다음 버튼을 클릭 10 항목) 누군가가 올바른 방향으로 나를 안내 할 수 있다면 그것은 나를 위해 그렇게 도움이 될거야

답변

1

카운트 다운 래치를 제거 a 이 같은 서명 변경 ND : 또한, 구현에

public void fetchData(int offset) 

를 페이지 크기를 설정하는 코드를 유지하지만 추가 :

dataQuery.setOffset(offset); 

지정된 데이터의 다음 페이지를 가져 오지 것이다 오프셋. responder에서 nextPage를 호출 할 필요가 없습니다. 결과는 지정된 오프셋의 "pageSize"레코드 블록입니다.

+0

답장을 보내 주셔서 감사합니다.이'dataQuery.setOffset (offset)'을 설명해 주시겠습니까? –

+1

서버에서로드 된 모든 객체가 순차적으로 구성됩니다. 첫 번째 객체에는 0 오프셋이 있고 두 번째 객체에는 1 오프셋이 있습니다. dataQuery.setOffset을 사용하여 오프셋을 설정할 때 서버가 지정된 오프셋에서 객체의 다음 "페이지"를로드하도록 지시합니다. –