答案 0 :(得分:0)
还不能解决您的实际问题,而只是一些基本的代码清除(我无法在注释中添加内容)。
确定对子集合的引用的方法过于复杂。实际上,您可以只在第一个循环中从Document
获取子集合:
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference jobOffersCollection = db.collection("Joboffers");
jobOffersCollection.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
for (DocumentChange snapshot : documentSnapshots.getDocumentChanges()) {
if (snapshot.getType()==DocumentChange.Type.ADDED) {
Log.d("employerid", snapshot.getDocument().getId());
CollectionReference offerCollection = snapshot.getDocument().getReference().collection("Offers");
offerCollection.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
for (DocumentChange offerSnapshot : documentSnapshots.getDocumentChanges()) {
if (n.getType() == DocumentChange.Type.ADDED) {
JO jo = snapshot1.getDocument().toObject(JO.class);
Log.d("poste", jo.getPoste().toString());
postelist.add(jo);
jolistadapter.notifyDataSetChanged();
}
}
}
});
}
MList.setAdapter(jolistadapter);
}
});
请注意,我不完全理解您为什么以自己的方式做事。我建议:
get
代替addSnapshotListener
,因为您的代码似乎只专注于一次性执行操作。documentSnapshot.getDocuments()
而不是getDocumentChanges()
上进行循环,这将消除对非常不寻常的DocumentChange.Type.ADDED
检查的需要。