RecycleView适配器:java.util.ArrayList无法强制转换为com.google.firebase.firestore.QuerySnapshot
我是个新手,不熟悉使用recyclerview适配器。我使用此方法将数据加载到recyclerview适配器中。数据将使用合并查询进行过滤。然而,应用程序崩溃了,我得到了java.lang.ClassCastException:java.util.ArrayList无法转换为com.google.firebase.firestore.QuerySnapshot。有人知道如何解决这个问题吗RecycleView适配器:java.util.ArrayList无法强制转换为com.google.firebase.firestore.QuerySnapshot,java,android,firebase,android-recyclerview,google-cloud-firestore,Java,Android,Firebase,Android Recyclerview,Google Cloud Firestore,我是个新手,不熟悉使用recyclerview适配器。我使用此方法将数据加载到recyclerview适配器中。数据将使用合并查询进行过滤。然而,应用程序崩溃了,我得到了java.lang.ClassCastException:java.util.ArrayList无法转换为com.google.firebase.firestore.QuerySnapshot。有人知道如何解决这个问题吗 private void loadData(){ if(modelArrayList.si
private void loadData(){
if(modelArrayList.size()>0)
modelArrayList.clear();
storageReference = FirebaseStorage.getInstance().getReference();
Query query = collectionReference.whereArrayContains("pet", pettype);
Query query2 = collectionReference.whereArrayContains("service", "Pet Sitting");
Query query3 = collectionReference.whereArrayContains("petnum", petnumber);
Query query4 = collectionReference.whereArrayContains("region", reg);
Query query5 = collectionReference.whereArrayContains("subregion", subreg);
Task task = query.get();
Task task2 = query2.get();
Task task3 = query3.get();
Task task4 = query4.get();
Task task5 = query5.get();
Task combinedtask = Tasks.whenAllSuccess(task, task2, task3, task4, task5);
combinedtask.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for(DocumentSnapshot querySnapshot: task.getResult()){
model model = new model(querySnapshot.getString("firstname"),
querySnapshot.getString("lastname"),
querySnapshot.getString("description"),
querySnapshot.getString("userID"));
modelArrayList.add(model);
}
adapter = new My_recyclerview_adapter(Pet_sitting_result.this, modelArrayList);
recycler_view.setAdapter(adapter);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Pet_sitting_result.this, "Error", Toast.LENGTH_SHORT);
}
});
}
private void loadData(){
如果(modelArrayList.size()>0)
modelArrayList.clear();
storageReference=FirebaseStorage.getInstance().getReference();
Query Query=collectionReference.whererraycontains(“pet”,pettype);
查询query2=collectionReference.whererraycontains(“服务”、“宠物看护”);
查询query3=collectionReference.whererrayContains(“petnum”,petnumber);
查询query4=collectionReference.whererraycontains(“region”,reg);
查询query5=collectionReference.WhererrayContains(“子区域”,子区域);
Task=query.get();
任务task2=query2.get();
Task task3=query3.get();
Task task4=query4.get();
Task task5=query5.get();
Task combinedtask=Tasks.WhallSuccess(任务、任务2、任务3、任务4、任务5);
combinedtask.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
对于(DocumentSnapshot querySnapshot:task.getResult()){
model model=新模型(querySnapshot.getString(“firstname”),
querySnapshot.getString(“lastname”),
querySnapshot.getString(“说明”),
getString(“userID”);
modelArrayList.add(model);
}
适配器=新的My\u recyclerview\u适配器(Pet\u siting\u result.this,modelArrayList);
回收器视图。设置适配器(适配器);
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(Pet\u siting\u result.this“Error”,Toast.LENGTH\u SHORT);
}
});
}
由于您的组合任务是多个其他任务的结果,因此它将生成一个列表
对象,而不是查询快照
。因此,您的成功回调应该声明它接受一个列表,因为您的组合任务是多个其他任务的结果,因此它将生成一个列表对象,而不是QuerySnapshot
。因此,您的成功回调应该声明它接受一个列表,我不太了解拉单个快照部分。介意详细说明吗?访问列表中的任务以获得每个查询的结果。和其他列表一样,我不确定结果会是什么,但我正在尝试为所有查询创建AND运算符。例如,用户必须满足所有五个条件才能显示其数据。如果他们只见面,我就不太明白拉个人快照的部分。介意详细说明吗?访问列表中的任务以获得每个查询的结果。和其他列表一样,我不确定结果会是什么,但我正在尝试为所有查询创建AND运算符。例如,用户必须满足所有五个条件才能显示其数据。只要他们能见面