Так как Firestore SDK не имеет возможности начать запрос с определенной страницы, единственный способ сделать это:последняя на каждой странице.
Вы получаете все необходимые данные, сортируете их и получаете нужные документы.
Пример кода для решения №.1:
//Taken from Firebase code example in the link
Query page = db.collection("cities")
.orderBy("population")
.limit(25);
List<DocumentSnapshot> desiredList;
//Looping through each pages, start from the first one
for (int page = 1; page <= desiredPage; page++) {
page.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
desiredList = documentSnapshots.getDocuments();
//This will be ignored if already the last page
DocumentSnapshot lastPage = desiredList
.get(documentSnapshots.size() -1);
page = db.collection("cities")
.orderBy("population")
.startAfter(lastPage)
.limit(25);
}
});
}
Образец для раствора №.2:
//Taken from Firebase code example in the link
Query allPages = db.collection("cities")
.orderBy("population")
.limit(25 * desiredPage);
//Looping through each pages, start from the first one
allPages.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
//Retrieve only documents from no. something to something
List<DocumentSnapshot> desiredDocuments = documentSnapshots
.getDocuments().subList(25 * (desiredPage - 1), desiredPage * 25);
}
});
(может быть, будет такая функция, или startAtPage()
что-то в этом роде) Пока я предпочитаю решение нет.2 для простоты, но у каждого разработчика есть свои предпочтения.