2016-07-29 10 views
0

Ich versuche Laravel Paginierung zum ersten Mal zu implementieren und ich bin verloren, was zu tun ist.Infinity Scroll Android und Laravel 5.2

Ich verwende folgenden werden die Daten aus der Datenbank

$data = DB::table('news')->orderBy('created_at', 'asc')->paginate(15); 
    return $data; 

zu ziehen, und ich bekam die folgende

{"total":3,"per_page":15,"current_page":1,"last_page":1,"next_page_url":null,"prev_page_url":null,"from":1,"to":3,"data":[{"id":1,"news_id":"3869577","news_title":"First Title","news_content":"First", "created_at":"2016-06-06 09:20:33","updated_at":"2016-06-06 09:20:33"},{"id":2,"news_id":"11081411","news_title":"Second Title","news_content":"Second.","created_at":"2016-06-07 07:20:33","updated_at":"2016-06-07 07:20:33"},{"id":3,"news_id":"14646385","news_title":"Third Title","news_content":"Third","created_at":"2016-06-07 14:58:33","updated_at":"2016-06-07 14:58:33"}]} 

ich dann EndlessScrollListener erstellt, die AbsListView.OnScrollListener

Auf meinem Fragment implementiert, ich dann haben:

listview.setOnScrollListener(new EndlessScrollListener() { 
     @Override 
     public boolean onLoadMore(int page, int totalItemsCount) { 
      // Triggered only when new data needs to be appended to the list 
      // Add whatever code is needed to append new items to your AdapterView 
      customLoadMoreDataFromApi(page); 
      // or customLoadMoreDataFromApi(totalItemsCount); 
      return true; // ONLY if more data is actually being loaded; false otherwise. 
     } 
    }); 

Dann

// Append more data into the adapter 
public void customLoadMoreDataFromApi(int offset) { 
    // This method probably sends out a network request and appends new data items to your adapter. 
    // Use the offset value and add it as a parameter to your API request to retrieve paginated data. 
    // Deserialize API response and then construct new objects to append to the adapter 
} 

Fragen

  1. Wie kann ich die nächste URL contruct mehr Daten zu holen?
  2. Muss ich die neue URL auf meiner Route in Laravel erfassen?

Danke für die Hilfe

+0

rufen Sie Ihre Daten Aufgabe innerhalb customLoadMoreDataFromApi holen() – DKV

+0

, dass ich schon wissen, gibt es zwei Fragen, die ich über 1 gefragt und 2. – BlackPearl

+0

Sie brauchen nicht die URL zu konstruieren - laravle dies für Sie tut - es ist die nächste Seiten-URL-Eigenschaft, die Null ist, wenn keine nächste Seite vorhanden ist, da Sie insgesamt 3 Elemente mit 15 Seiten pro Seite haben. 2. Rufen Sie einfach diese URL auf, Laravel holt sie bereits korrekt. –

Antwort

0

Ich werde im Grunde nur direkt Ihre beiden Fragen

  1. Laravel Sie die URL geben beantworten, wenn Sie mehr als 15 Elemente haben. Sie können dann die URL aus dem next_page_url-Parameter extrahieren, den Sie gerade in Ihrem Snippet gezeigt haben. Es ist null, weil Sie < 15 Elemente haben und Paginierung für 15 Elemente festlegen.

  2. Sie müssen hierfür keine neue Route erstellen. Die URL ruft Ihre Route auf, auf der Sie die Seitennummerierung einrichten. Die Paginierungsfunktion überwacht die angegebenen Parameter (...? Page = 2) und gibt Ihnen die passenden Elemente.

+0

Danke, lassen Sie mich testen und sehen. – BlackPearl