2017-04-09 24 views
0

私はUsersテーブル内のすべてのユーザからのいくつかのデータを取得したいです。私はData pagingを使用しなければならないことがわかった。 >https://backendless.com/feature-47-loading-data-objects-from-server-with-sorting/フィーチャー47-で説明したように、私は(私も をソートする必要があるため)同じコードを書いたが、その後、私はこのコードは最初のページからデータを取ることを考え出しました。次に、サイズがゼロに等しくないまで、次のページに移動して読む必要があると判断しました。私は、私が代わりに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要求を開始します。それはまた、あなたが、私は私がそれを必要とする理由 'getTotalObjects()'メソッドはtable.Butのレコードのすべての量を返すことを理解しましループ – Eenvincible

答えて

0

私は実際にあなたの解決策の問題を見つけることができませんが、私が使用してこの問題を解決:

int型TOT = response.getTotalObjects()

を最初の応答でオブジェクトの合計数を取得します。オブジェクトのリストがsize = totになるまでループを使います。各ループでは、オフセットを現在のリストのサイズに設定するクエリを作成します。

+0

をやっていないことを意味しますか?今、私のテーブルには17人のユーザーがいて、すべてのユーザーを通過したいと思っています。最初のページのサイズは10です。つまり、10人のユーザーを取得します。 7人のユーザーが残ったそれから、残りの7人のユーザーがいる次のページを取得します。どうすれば次のページに進むことができますか?あなたの答えによると、私はコードを書いていますが、それは間違っているようです、無限ループがあるからです。助けてください。 'しばらく(response.getCurrentPage()サイズ> 0){' ' – abay

+0

一方(one.getCurrentPage()サイズ()> 0){ オフセット+ = one.getCurrentPage()サイズ()。 イテレータ it = one.getCurrentPage()。iterator(); しばらく(it.hasNext()){// 何か } one.getPage(10、オフセット、この); //この行のように思えるが間違っている、なぜ? } ' – abay

+0

あなたはオフセットQueryOptionsで、それは総オブジェクトに等しくなるまで各オフセット時間を増加させるよりも設定することができます。残念ながら、私はページングシステムが実際にどのように動作するのか分からないので、そのコードを手助けすることはできません –

関連する問題