2016-07-07 7 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

カウントダウンラッチaを削除指定されたからデータの次のページをフェッチします

dataQuery.setOffset(offset); 

:実装で

public void fetchData(int offset) 

、ページサイズを設定するだけでなく、これを追加するためのコードを保つ:NDこのような署名を変更オフセット。レスポンダのnextPageを呼び出す必要はありません。結果は、指定されたオフセットからの "pageSize"レコードのブロックになります。

+0

お返事ありがとうございます。この 'dataQuery.setOffset(offset)'について説明してください。 –

+1

サーバからロードされたすべてのオブジェクトが順番に整理されます。最初のオブジェクトはオフセット0を持ち、2番目のオブジェクトはオフセット1を持ちます。 dataQuery.setOffsetを使用してオフセットを設定すると、指定されたオフセットからオブジェクトの次の「ページ」をロードするようにサーバーに指示します。 –

関連する問題