【问题标题】:How do i Listen or Observe an Firebase cloud firestore collection我如何收听或观察 Firebase Cloud Firestore 集合
【发布时间】:2020-04-07 12:26:16
【问题描述】:

我正在开发具有 2 个活动的简单应用程序。第一个显示 ListView(从云 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()));
            }
        }
    });

【问题讨论】:

    标签: android firebase google-cloud-firestore


    【解决方案1】:

    你可以使用notifydatasetchanged():

    notifyDataSetChanged()

    通知附加的观察者底层数据已更改,任何反映数据集的视图都应自行刷新。

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

    【讨论】:

    • 是的,我正在使用它,但 ListView 或它的适配器根本没有任何变化。为什么我只在创建活动时才用数据填充我的列表。当我从第二个活动按返回按钮时,我的第一个活动不会再次调用 onCreate()
    • 当你按下返回按钮时会调用onStart(),所以你需要在onStart而不是onCreate中检索数据,在onCreate()中你可以设置你的视图
    • 谢谢!所以如果我在 onStart 中检索我的数据,它会再次从 firebase 检索我的整个集合,对吗?
    • 是的。 OnStart 在按下时调用,在 onCreate 之后在 activity 启动时调用
    • 如果答案对您有帮助,请点赞并标记为正确,以便其他人知道它有帮助,谢谢!
    猜你喜欢
    • 2021-05-06
    • 2022-01-19
    • 2021-03-06
    • 1970-01-01
    • 2020-05-20
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多