2016-07-07 47 views
0

嗯,我不那麼具體和明確的稱號(試圖太難爲它)道歉,所以我有這個功能控制自動功能手動

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 items每個請求循環和這個循環運行,直到所有的數據檢索,我想要的是讓這個循環手動運行(在按鈕點擊我想加載前10項,然後而不是再次請求我希望它手動工作,獲取下一個按鈕上的10個項目)如果有人能指導我正確的方向,那麼它會對我很有幫助

回答

1

刪除倒計時latch a ND改變這樣的簽名:

public void fetchData(int offset) 

在實現中,保持代碼的設置頁面大小,但也補充一點:

dataQuery.setOffset(offset); 

將從指定獲取數據的下一頁抵消。無需在響應者中調用nextPage。您得到的結果將是指定偏移量的「pageSize」記錄塊。

+0

非常感謝您的回覆,請您解釋一下'dataQuery.setOffset(offset)'? –

+1

從服務器加載的所有對象都按順序組織。第一個對象具有偏移量0,第二個具有偏移量1,依此類推。當您使用dataQuery.setOffset設置偏移量時,您指示服務器從指定的偏移量加載對象的下一個「頁面」。 –