I'm trying to implement a pagination system using Firebase Firestore startAfter() and limit() query methods. The first query is returned successfully, but the second one returns an empty snapshot.
Here's my getNextPage() method :
fun getNextPage(paginationSize : Long) : TrendingRepository { database.collection("app") .document("data") .collection("offers") .orderBy("discount") .startAfter(lastVisible) .limit(paginationSize) .get().addOnSuccessListener { snapshot -> Log.i("TrendingRepo", "pagination size : $paginationSize") val newList = ArrayList<Offer>() if (!snapshot.isEmpty) { lastVisible = snapshot.documents[snapshot.size() - 1] } for (document in snapshot) { val item = document.toObject(Offer::class.java) newList.add(item) Log.i("TrendingRepo", "at position: ${newList.indexOf(item)} got item: ${item.id}") } successListener?.onSuccess(newList) }.addOnFailureListener { failureListener?.onFailure(it.localizedMessage) } return this }
here's my Logcat :
TrendingRepo: pagination size : 48 // first try
TrendingRepo: at position: 0 got item: 0pqcRzSd06WWlNNmcolu
TrendingRepo: at position: 1 got item: 7I7wiSYt5yEBWwN08bqJ
...
TrendingRepo: at position: 45 got item: 4B3dEPhFLqhKrYpLWYE7
TrendingRepo: at position: 46 got item: 4ddLqiGe8ReXW8SKq2Q6
TrendingRepo: at position: 47 got item: 4uVnnGNAmKvGUUHcV01n
TrendingRepo: pagination size : 48 // second try
//no more logging, data is empty