【发布时间】:2018-08-21 09:54:07
【问题描述】:
我有一个 recyclerView,当直接从 onCreate 调用时,它可以很好地加载。但是,当将其插入 Firestore 集合的 onSuccessListener 时,它不会加载。这是上述代码的示例:
private void populateRecycler(String RootCollection, String UserID) {
mQuery = mFirestore
.collection(RootCollection)
.whereEqualTo("UID", UserID)
.orderBy("DateAdded", Query.Direction.DESCENDING);
mAdapter = new OrdersAdapter(mQuery, this) {
@Override
protected void onDataChanged() {
if (getItemCount() == 0) {
mOrdersRecycler.setVisibility(View.GONE);
mEmptyView.setVisibility(View.VISIBLE);
} else {
mOrdersRecycler.setVisibility(View.VISIBLE);
mEmptyView.setVisibility(View.GONE);
}
}
protected void onError (FirebaseFirestoreSettings e) {
// Show a snackbar on errors
Snackbar.make(findViewById(android.R.id.content),
"Error: check logs for info.", Snackbar.LENGTH_LONG).show();
}
};
// Populate and enable RecyclerView
mOrdersRecycler.setLayoutManager(new LinearLayoutManager(this));
mOrdersRecycler.setAdapter(mAdapter);
}
但是当我从另一个包含此代码的方法调用populateRecycler(); 时:
mFirestore.collection("UIDOrg")
.document(UserID)
.get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
UIDOrg uidOrg = documentSnapshot.toObject(UIDOrg.class);
mOrgTextView.setText(uidOrg.getOrg());
RootCollection = uidOrg.getRootCollection();
populateRecycler(RootCollection, UserID);
}
...它不起作用。谁能解释一下原因?
【问题讨论】:
-
为了进一步说明,代码在 mAdapter = new OrdersAdapter 之前停止。好像新的 OrdersAdapter 无法加载。当我在其中插入 Log.d 时,什么也没有出现。
标签: android firebase firebase-realtime-database android-recyclerview google-cloud-firestore