gpt4 book ai didi

android - 如何准确使用 'addChildEventListener()' 以达到以下目的?

转载 作者:行者123 更新时间:2023-11-29 01:11:48 24 4
gpt4 key购买 nike

我在 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");

我知道我可以使用 addListenerForSingleValueEventaddValueEventListener 来实现我想要的,但我不希望这段代码每次都运行 onDataChange() 被调用,我只能通过在 onChildAdded() 中添加代码来实现(或者不?)。

那么,我怎样才能在这里使用 addChildEventListener() 来获得所需的结果?

最佳答案

如果你想要像 {key=value, key=value, key=value} 这样的数据,只获取 .child(requestID) 而没有 .child (键).addValueEventListener。它返回整个节点。然后将其转换为 HashMap ((HashMap) dataSnapshot.getValue())。通过((HashMap) dataSnapshot.getValue()).get(key)获取具体值。

但是您想要使用 addChildEventListener() 创建 Hashmap。在addChildEventListener()之前创建一个Hashmap然后填入onChildAdded,

final HashMap<String, Object> map = new HashMap<>();
ref.child(requestID).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.getValue() != null) {

map.put(dataSnapshot.getKey(),dataSnapshot.getValue());
} else {
}
}
...
...
});

关于android - 如何准确使用 'addChildEventListener()' 以达到以下目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com