我不知道这是否是您正在寻找的,但您可以创建一个界面,然后您可以通过一种方法获取和使用您的数据。例如;
private interface Callback {
void onData(List<Users> list1, List<Users> list2, List<Users> list3);
}
界面包含 3 个列表。第一个列表包含 chauffeurs 字段等于 Cyril 的文档,第二个列表包含 chauffeurs 字段等于 Alexandre,最后一个列表包含 chauffeurs 等于“”(您可以根据需要更改界面)。
顺便说一下,Users 是与用户集合中的文档具有相同字段的对象。
public class Users {
private String adresse, adresse2, chauffeurs, codepostal;
public Users() {
}
public Users(String adresse, String adresse2, String chauffeurs, String codepostal) {
this.adresse = adresse;
this.adresse2 = adresse2;
this.chauffeurs = chauffeurs;
this.codepostal = codepostal;
}
public String getAdresse() {
return adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}
public String getAdresse2() {
return adresse2;
}
public void setAdresse2(String adresse2) {
this.adresse2 = adresse2;
}
public String getChauffeurs() {
return chauffeurs;
}
public void setChauffeurs(String chauffeurs) {
this.chauffeurs = chauffeurs;
}
public String getCodepostal() {
return codepostal;
}
public void setCodepostal(String codepostal) {
this.codepostal = codepostal;
}
}
您可以访问和使用这些列表/数据的方法(例如,您可以根据需要更改逻辑。由您决定):
private void getData(Callback callback) {
Task<QuerySnapshot> task1 = ref.whereEqualTo("chauffeurs", "Cyril").get();
Task<QuerySnapshot> task2 = ref.whereEqualTo("chauffeurs", "Alexandre").get();
Task<QuerySnapshot> task3 = ref.whereEqualTo("chauffeurs", "").get();
Task<List<QuerySnapshot>> allTasks = Tasks.whenAllSuccess(task1, task2, task3);
allTasks.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
QuerySnapshot query1 = (QuerySnapshot) task1.getResult();
QuerySnapshot query2 = (QuerySnapshot) task2.getResult();
QuerySnapshot query3 = (QuerySnapshot) task3.getResult();
List<Users> list1 = new ArrayList<>();
List<Users> list2 = new ArrayList<>();
List<Users> list3 = new ArrayList<>();
for (DocumentSnapshot document : query1) {
if (document.exists()) {
list1.add(document.toObject(Users.class));
}
}
for (DocumentSnapshot document : query2) {
if (document.exists()) {
list2.add(document.toObject(Users.class));
}
}
for (DocumentSnapshot document : query3) {
if (document.exists()) {
list3.add(document.toObject(Users.class));
}
}
callback.onData(list1, list2, list3);
}
});
}
而当您想使用/获取这些数据时,只需调用该方法:
getData((list1, list2, list3) -> {
//Documents where chauffeurs field equals Cyril
for(int i = 0; i < list1.size(); i++){
Users user = list1.get(i);
String adresse = user.getAdresse();
String adresse2 = user.getAdresse2();
String chauffeurs = user.getChauffeurs();
String codepostal = user.getCodepostal();
}
//Documents where chauffeurs field equals Alexandre
for(int i = 0; i < list2.size(); i++){
Users user = list2.get(i);
String adresse = user.getAdresse();
String adresse2 = user.getAdresse2();
String chauffeurs = user.getChauffeurs();
String codepostal = user.getCodepostal();
}
//Documents where chauffeurs field equals ""
for(int i = 0; i < list3.size(); i++){
Users user = list3.get(i);
String adresse = user.getAdresse();
String adresse2 = user.getAdresse2();
String chauffeurs = user.getChauffeurs();
String codepostal = user.getCodepostal();
}
});