Я объединяю два запроса, чтобы выполнить запрос «не равный» для коллекции Firestore, который изначально невозможен в Firestore, поэтому я должен сделать это локально. Мне нужно получить последний видимый документ моей комбинированной задачи для разбивки на страницы.
Ниже приведен код, который я пишу, чтобы получить список документов по обоим результатам запроса.
Query first = firebaseFirestore
.collection("jobs")
.whereGreaterThan("createdBy",currentUser.getEmail())
.orderBy("createdDate",Query.Direction.ASCENDING)
.limit(2);
Query second = firebaseFirestore
.collection("jobs")
.whereLessThan("createdBy",currentUser.getEmail())
.orderBy("createdDate",Query.Direction.ASCENDING)
.limit(2);
Task<QuerySnapshot> firstTask = first.get();
Task<QuerySnapshot> secondTask = second.get();
final Task<List<QuerySnapshot>> combinedTask = Tasks.whenAllSuccess(firstTask, secondTask);
combinedTask.addOnSuccessListener(new OnSuccessListener<List<QuerySnapshot>>() {
@Override
public void onSuccess(List<QuerySnapshot> querySnapshots) {
List<Job> list = new ArrayList<>();
for(QuerySnapshot qs: querySnapshots){
for(DocumentSnapshot document: qs){
Job job = document.toObject(Job.class);
list.add(job);
}
}
JobAdapter jobAdapter = new JobAdapter(list);
recyclerView.setAdapter(jobAdapter);
DocumentSnapshot lastVisible = combinedTask.getResult().get()
}
});
В строке
DocumentSnapshot lastVisible = combinedTask.getResult().get()
Я могу получить доступ только к документам из моего первого или второго запроса, поэтому я не уверен, как получить последний видимый документ, я думаю, что последний документ будет из моего второго запрос логически, но я не уверен.
Вот учебник, которому я следовал, чтобы выполнить sh это:
https://www.youtube.com/watch?v=KdgKvLll07s