2016-07-07 15 views
0

Ich versuche, die Antworten auf meine Fragen herauszufinden, ich bin Daten aus backendless asynchron abholen.laden Daten von Backendless in Chunks (kleine Teile)

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

So, jetzt ich möchte wissen, wie kann ich Daten in Blöcken zu laden, würde es eine Button als der Fußzeile RecylerView sein (hier bin bevölkern meine abgerufenen Daten), aber ich weiß nicht, wie holen holen die Daten von 1 bis 10 auf nächste Anfrage bin werde das tun, was soll ich darüber in meinem Kopf abbildet, ist, dass „U indem ich Server die Daten zu holen sind. der Index der gewünschten Daten wie auf erste Anforderung die Daten aus 11-20 und so weiter. "

Aber was, wenn wir die Daten (seine dritte Request) von 21 bis 30 und einige neue Daten wurde erstellt sind anfordert (in erster Indizes) dann, wie wir Gonna jene laden? Müssen wir alles vom Start laden? Bitte korrigieren Sie mich.

+0

Wie diese Frage aus der Diskussion hier ist anders ?: http://stackoverflow.com/questions/38250686/control-an-automated-function-manually –

+0

@MarkPiller ich habe es funktioniert, ich habe es früher und auf der nächsten Frage seiner ich etwas Blei in diesem Thema bekommen (können wir sagen, das wäre eine bessere Frage als diese) –

+0

@remyboys sind Sie bereit AsyncTask zu benutzen? Wenn ja, dann habe ich eine Lösung. Was ich kürzlich in meinem Projekt verwendet habe. – Basanth

Antwort

0

habe es funktioniert:

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