我如何收听或观察Firebase云Firestore集合

时间:2019-12-14 06:42:59

标签: android firebase google-cloud-firestore

我正在研究具有2个活动的简单应用程序。第一个显示ListView(从Cloud Firestore获取数据)和1个按钮,最后一个具有更改我的Firestore数据或添加新数据的功能。

我的问题是,直到我重新启动应用程序后,我的ListView项才会更改。我希望它通知更新并在第二次活动中按“后退”按钮时显示给我。

因此,我想为我的云Firestore数据库添加侦听器,或者我想获取未请求的最后添加或更新的文档。 然后,我可以将其更改或添加到onStart()函数的ListView中。

这是我检索数据并且mCollectionRef是集合引用的方式

        mCollectionRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if(task.isSuccessful()){
                for(QueryDocumentSnapshot documentSnapshot : Objects.requireNonNull(task.getResult())){
                    Book tempBook = new Book(documentSnapshot.getId(),documentSnapshot.getString("title"),documentSnapshot.getString("author"),documentSnapshot.getString("publisher"),documentSnapshot.getLong("copies"));
                    booksList.add(tempBook);
                    customAdapter.notifyDataSetChanged();
                }
            }
            else{
                Log.v("Error on book documents", String.valueOf(task.getException()));
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

您可以使用notifydatasetchanged()

  

notifyDataSetChanged()

     

通知附加的观察者基础数据已更改,任何反映数据集的View均应刷新自身。

https://developer.android.com/reference/android/widget/BaseAdapter.html#notifyDataSetChanged()