gpt4 book ai didi

java - 如何一次性将从 Firebase 检索到的数据存储在 ArrayList 中?

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

我在数据库中有一些相同引用的数据,我试图将其存储在 ArrayList<String> 中.

方法如下:

    mDatabase.child("child").child(uid).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {

if (dataSnapshot.getValue() != null){
ids.add(dataSnapshot.getValue().toString());
Log.d("ids", ids.toString());
} else {
Toast.makeText(getBaseContext(), "No data!", Toast.LENGTH_SHORT).show();
}

}
...
...
});

引用mDatabase.child("child").child(uid)...其中存储了 2 个 key ,它们存储在 ids 中像这样一个接一个:

D/ids: [-Kayr_ENTy4QZQKn3Bgx]
D/ids: [-Kayr_ENTy4QZQKn3Bgx, -KaywN_5pTOrB0ooBIC3]

我想知道的是如何让它们一次添加到ids中而不是一个接一个?

更新 1:-

数据结构是这样的:

-app
-child
-uid
-1484967071: -Kayr_ENTy4QZQKn3Bgx
-1484967222: -KaywN_5pTOrB0ooBIC3

并使用 valueEventListener() , 正如 cartant 所建议的那样, 导致被检索:

D/ids: [{1484967222=-KaywN_5pTOrB0ooBIC3, 1484967071=-Kayr_ENTy4QZQKn3Bgx}]

尽管我只想要 key ,它们是 -KaywN_5pTOrB0ooBIC3-Kayr_ENTy4QZQKn3Bgx .

最佳答案

如果您希望将整个快照传递给监听器,请使用 addValueEventListeneraddListenerForSingleValueEvent .

如果您使用 addValueEventListener,将使用初始快照调用监听器,并在数据库更改时再次调用。

如果您使用 addListenerForSingleValueEvent,监听器将仅在初始快照时被调用一次。

监听器收到的快照将包括所有子项。要迭代它们,您可以这样做:

@Override
public void onDataChange(DataSnapshot snapshot) {
ArrayList<String> ids = new ArrayList<String>();
for (DataSnapshot childSnapshot: snapshot.getChildren()) {
ids.add(childSnapshot.getValue().toString());
}
}

关于java - 如何一次性将从 Firebase 检索到的数据存储在 ArrayList<String> 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776762/

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