【发布时间】:2017-02-25 19:44:34
【问题描述】:
我有一些数据存储在FirebaseDatabase。
数据结构如下所示:
app
-ref
-requestID
-key
-key: value
-key: value
-key: value
这是我尝试使用 addChildEventListener() 检索数据的方式:
ref = FirebaseDatabase.getInstance().getReferenceFromUrl("https://app-q24sg.firebaseio.com/ref");
ref.child(requestID).child(key).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.getValue() != null) {
Log.d("dataSnapshot", dataSnapshot.getValue().toString());
} else {
}
}
...
...
});
这里的Log.d 正在打印出来:
D/dataSnapshot: value
D/dataSnapshot: value
D/dataSnapshot: value
我试过Log.d("dataSnapshot", dataSnapshot.getKey());,但我得到了:
D/dataSnapshot: key
D/dataSnapshot: key
D/dataSnapshot: key
我想要的是:
{key=value, key=value, key=value}
这样我就可以这样做了:
final Map<String, String> map = (Map<String, String>) dataSnapshot.getValue();
key1 = map.get("key");
key2 = map.get("key");
我知道我可以使用addListenerForSingleValueEvent 或addValueEventListener 来实现我想要的,但我不希望每次调用onDataChange() 时都运行这段代码,而我只能通过在@ 中添加代码来实现987654335@(或者不是?)。
那么,我如何在此处使用addChildEventListener() 来获得所需的结果?
【问题讨论】:
-
你什么时候想要这个字符串
{key=value, key=value, key=value}?是否适用于每个onChildAdded(因此对于每个onChildAdded方法调用,返回的字符串都是递增的)?或任何其他事件?请解释一下。 -
@Wilik 是的,在
requestID下添加了一个孩子,所以每个onChildAdded都需要{key=value, key=value, key=value}。 -
请回复.. 我在这里提出了一个新的相关问题:stackoverflow.com/q/42469250/6144372
标签: android firebase firebase-realtime-database