我正在使用 Firebase Cloud Firestore 和 Firestore UI RecyclerView 在MainActivity
上显示项目。一切正常,除了当我卸载并重新安装该应用程序时,query
不会获取以前添加的项目,只显示一个空列表。当我在重新安装后将新项目添加到 Firestore 时,仅获取该项目,仍然没有以前的数据。但是,我可以在Firebase控制台上看到以前添加的数据和新项目。
有没有人遇到过类似的问题,或者知道什么会导致这种情况?
我设置RecyclerView
的函数如下。我调用这个函数,然后在onStart
中调用adapter.startListening()
,在onStop
中调用adapter.stopListening()
。
private void setupRecyclerView() {
if(shouldStartSignIn()) return;
if(!PermissionUtils.requestPermission(this, RC_STORAGE_PERMISSION, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Log.e(TAG, "Permission not granted, don't continue");
return;
}
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
pagesRecyclerView.setLayoutManager(layoutManager);
Query query = FirebaseFirestore.getInstance().collection(Page.COLLECTION).whereEqualTo(Page.FIELD_USER_ID, FirebaseAuth.getInstance().getCurrentUser().getUid()).orderBy(Page.FIELD_TIMESTAMP).limit(50);
FirestoreRecyclerOptions<Page> options = new FirestoreRecyclerOptions.Builder<Page>().setQuery(query, Page.class).build();
adapter = new PagesAdapter(options, this);
pagesRecyclerView.setAdapter(adapter);
}
您已经初始化了query
但查询未附加到任何实际拉取数据的侦听器。所以你的适配器是空的。基本上你需要做这样的事情:
query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot snapshot,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
// Handle error
//...
return;
}
// Convert query snapshot to a list of chats
List<Chat> chats = snapshot.toObjects(Chat.class);
// Update UI
// ...
}
});
您可以在此处阅读有关它的更多信息:https://github.com/firebase/FirebaseUI-Android/tree/master/firestore#querying