Ir a la documentación
Java

Paginación

Una página, todas las páginas o un elemento cada vez.

Una página

OnePage.java
RequestOptions inbox = RequestOptions.of("folder", "inbox").limit(25);Page page = client.threads().list(inbox); for (Map<String, Object> thread : page) {    System.out.println(thread.get("id") + " " + thread.get("subject"));} if (page.hasMore()) {    Page next = client.threads().list(inbox.cursor(page.nextCursor()));     System.out.println(next.size());}

Un método list devuelve una Page con items(), hasMore() y nextCursor(), y un bucle for recorre sus elementos. Vuelve a pasar nextCursor() como cursor, con los mismos filtros, para leer la página siguiente.

Todas las páginas

EveryPage.java
List<Map<String, Object>> contacts = client.contacts().listAll(); System.out.println(contacts.size());

Un método listAll sigue el cursor hasta el final y devuelve todos los elementos en una sola List. Un fallo en cualquier página hace fallar la llamada entera.

Un elemento cada vez

Iterate.java
for (Map<String, Object> thread : client.threads().iterate(RequestOptions.of("query", "invoice"))) {    if (Boolean.TRUE.equals(thread.get("hasUnread"))) {        System.out.println(thread.get("id"));         break;    }} long starred = client.threads().iterate(RequestOptions.of("labelIds", "STARRED")).stream().count(); System.out.println(starred);

Un método iterate devuelve un PagedIterable, que pide la página siguiente solo cuando el bucle llega a ella, así que un break detiene las peticiones. stream() ofrece el mismo recorrido como un Stream, y toList() lo reúne.

Un iterador se detiene cuando la API repite un cursor que ya ha seguido, así que un recorrido nunca puede entrar en un bucle sin fin.