2016-07-07 51 views
0

我想弄清楚我的問題的答案,我從 backendless異步獲取數據。從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(); 
    } 
}); 

所以現在我想知道我怎麼可以加載在塊數據,將有一個Button作爲RecylerView頁腳(我在這裏填充我取的數據),但我不知道怎麼我會這樣做,我在腦海中想象的是:「你必須通過告訴服務器來獲取數據。所需數據的索引就像第一個請求中的數據從下一個請求中的數據1到10中獲取數據11-20等等。「

但是如果我們從21-30請求數據(第三個請求)並且創建了一些新數據(在第一個索引中),那麼我們將如何加載這些數據呢?我們是否必須從開始加載所有內容?請糾正我。

+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); 
     } 
    } 
}