2016-07-07 5 views
0

私は自分の質問の答えを見つけようとしていますが、私は backendlessから非同期にデータを取り出しています。バックエンドのデータをチャンク(小部分)にロードする

CODE:

BackendlessDataQuery dataQuery = new BackendlessDataQuery(); 
dataQuery.setPageSize(10); // here am setting the page size (10 items to load at a single fetch) 
dataQuery.setWhereClause(whereClause); 

Backendless.Data.of(Note.class).find(dataQuery, new AsyncCallback<BackendlessCollection<Note>>() { 
    @Override 
    public void handleResponse(BackendlessCollection<Note> notes) { 
     //here i got the first 10 objects from Note Table 
    } 

    @Override 
    public void handleFault(BackendlessFault fault) { 
     swipeToReload.setRefreshing(false); 
     Toast.makeText(getContext(), "" + fault.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
}); 

は、だから今、私は(ここでは私のフェッチされたデータを移入しています)私はチャンクでデータをロードすることができ、RecylerViewのフッターとしてButtonが存在することになる方法を知っているが、私はどのようにしないでくださいしたいです私の心の中でこれについて描写していることは、「Uはサーバーに伝えることによってデータを取得する必要があります。最初の要求時のような望ましいデータのインデックスは、次の要求でデータを1から10までフェッチします11-20など。

しかし、私たちが21-30からデータ(3番目のリクエスト)をリクエストしていて、いくつかの新しいデータが(最初のインデックスで)作成されたら、それらをどのようにロードするのでしょうか?我々は開始からすべてをロードする必要がありますか?私を修正してください。

+0

どのようにこの質問はこっちの議論は異なっている?:http://stackoverflow.com/questions/38250686/control-an-automated-function-manually –

+0

@MarkPiller私はそれが働いて、私はそれを以前に投稿し、次の質問に私はこのトピックでいくつかのリードを持っている(我々はこれよりも改善された質問だったと言うことができます) –

+0

@remyboysはAsyncTaskを使用して喜んでですか?はいの場合、私は解決策を持っています。私は最近私のプロジェクトで使った。 – Basanth

答えて

0

それが働いてしまった:

public class MyForm { 
    final DataHandler dataHandler; 
    BackendlessCollection<Note> data; 

    MyForm() { 
     dataHandler = new DataHandler(this); 
    } 

    void setData(BackendlessCollection<Note> data) { 
     this.data = data; 
     //render new set of data 
    } 

    //'Fetch Data' Button click handler 
    public void fetchData() { 
     BackendlessDataQuery dataQuery = new BackendlessDataQuery(); 
     dataQuery.setPageSize(10); 

     Backendless.Data.of(Note.class).find(dataQuery, dataHandler); 
    } 

    //'Next Page' Button click handler 
    public void fetchNext() { 
     data.nextPage(dataHandler); 
    } 

    void setError(BackendlessFault fault) { 
     //swipeToReload.setRefreshing(false); 
     //Toast.makeText(getContext(), "" + fault.getMessage(), Toast.LENGTH_LONG).show(); 
    } 

    class DataHandler implements AsyncCallback<BackendlessCollection<Note>> { 
     final MyForm form; 

     DataHandler(MyForm form) { 
      this.form = form; 
     } 

     public void handleResponse(BackendlessCollection<Note> notes) { 
      form.setData(notes); 
     } 

     public void handleFault(BackendlessFault fault) { 
      form.setError(fault); 
     } 
    } 
} 
関連する問題