【问题标题】:Firebase multiple ValueEventListener AndroidFirebase 多个 ValueEventListener Android
【发布时间】:2018-08-16 22:12:20
【问题描述】:

这几天,我试图了解 Firebase 实时数据库的工作原理,但遇到了一些问题。 我有一个这样的 Firebase 数据库:

root/data1
root/data3
root/data3
.
.
root/dataN

我的问题是这样的。我如何在多个孩子上实现ValueEventListener? (例如 root/data3、root/data8、root/data9...这取决于用户)。

感谢您的支持。

【问题讨论】:

  • 这取决于登录的用户?如果是这样,“dataN”必须是一个变量,并且必须根据用户进行设置。使用此变量创建 ValueEventListener。
  • 这取决于例如用户想要了解哪些主题(例如 userA 不会只了解 root/data1 主题,userB 了解 root/data30 主题和 root/data98 主题,...)
  • 所以 Reaz Murshed 的答案是正确的。对于每个用户交互(主题选择),您必须添加一个侦听器。如果您必须在用户注销后保留此选择,则必须保留一个包含用户选择的所有主题 ID 的列表。

标签: android firebase firebase-realtime-database


【解决方案1】:

您只需根据用户输入更改您的 firebase 数据点的引用。例如,您可能会考虑根据button3 单击将数据点更改为data3。然后像下面这样实现你的onClickListener

DatabaseReference dataPoint = databaseRef.child("root")

button3.setOnClickListener(new OnClickListener(View v) {
    ....
    @Override
    public void onClick(View v) {
        dataPoint.child("data3").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // Get the data associated with this node.
            }
        }
    }
});

【讨论】:

  • 关键是root有很多孩子,每个用户决定知道几个孩子。 Ex user1 不会仅在子 root/child1 上被通知,user2 在 root/data40 上,root/data67,... 选择在子级和数字上是动态的
猜你喜欢
  • 2016-12-22
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多