我创建了一个项目,我需要一次监听多个数据库位置。
{
"A": [data-a],
"B": [data-b],
"C": [data-c]
}
每当有任何内容发生变化,在地点A
,B
或C
添加或删除时,我都希望显示Android中ListView
内发生的操作。
对于一个位置,我已经能够通过将以下代码添加到我的项目来实现这一目的。
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("A");
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//Child got added
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
//Child got changed
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
//Child got removed
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
//Child got moved
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Some error happened
}
});
现在回答我的问题。我是否需要为每个位置提供多个侦听器,或者我能以某种方式以更简单的方式获得有关所有更改的通知吗?
答案 0 :(得分:1)
是的,您需要添加多个引用和子侦听器。 Firebase没有SQL数据库中存在的联合,联接或其他运算符的概念。要检索的数据集合与用于访问它们的引用/侦听器之间存在1:1的关系。您不能使用通配符或其他机制一次访问多个数据集合。