如何一次将从 Firebase 检索到的数据存储在 ArrayList<String> 中?
Posted
技术标签:
【中文标题】如何一次将从 Firebase 检索到的数据存储在 ArrayList<String> 中?【英文标题】:How to store data retrieved from Firebase in an ArrayList<String> all at once? 【发布时间】:2017-06-06 05:11:34 【问题描述】:我在数据库中有一些相同引用下的数据,我正在尝试将其存储在 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 个密钥,它们像这样一个接一个地存储在 ids
中:
D/ids: [-Kayr_ENTy4QZQKn3Bgx]
D/ids: [-Kayr_ENTy4QZQKn3Bgx, -KaywN_5pTOrB0ooBIC3]
我想知道的是如何让它们在ids
中一次性添加而不是一个一个添加?
更新 1:-
数据结构是这样的:
-app
-child
-uid
-1484967071: -Kayr_ENTy4QZQKn3Bgx
-1484967222: -KaywN_5pTOrB0ooBIC3
按照cartant 的建议,使用valueEventListener()
会导致检索到:
D/ids: [1484967222=-KaywN_5pTOrB0ooBIC3, 1484967071=-Kayr_ENTy4QZQKn3Bgx]
虽然我只想要密钥,它们是 -KaywN_5pTOrB0ooBIC3
和 -Kayr_ENTy4QZQKn3Bgx
。
【问题讨论】:
你说你想要钥匙,但在你的例子中,你指出了价值观。在上面的数据结构中,键是 1484967071 和 1484967222,值是“-Kayr_ENTy4QZQKn3Bgx”和“-KaywN_5pTOrB0ooBIC3”。你真的想要键还是值? @DougStevenson bykeys
我的意思是字符串 -KaywN_5pTOrB0ooBIC3
而这个 -Kayr_ENTy4QZQKn3Bgx
不是来自 key:value
对的键。抱歉,造成混乱。
我认为给定的答案应该适合你。确保您获取的是迭代子快照的值,而不是传递给 onDataChange() 的快照。
【参考方案1】:
如果您希望将整个快照传递给侦听器,请使用addValueEventListener
或addListenerForSingleValueEvent
。
如果您使用addValueEventListener
,将使用初始快照调用侦听器,并在数据库更改时再次调用。
如果你使用addListenerForSingleValueEvent
,监听器只会在初始快照中被调用一次。
侦听器收到的快照将包括所有孩子。要迭代它们,您可以执行以下操作:
@Override
public void onDataChange(DataSnapshot snapshot)
ArrayList<String> ids = new ArrayList<String>();
for (DataSnapshot childSnapshot: snapshot.getChildren())
ids.add(childSnapshot.getValue().toString());
【讨论】:
感谢carant ...虽然它没有解决我的问题,但它给了我一些提示!在这里也需要你和@FrankvanPuffelen 的帮助:***.com/q/41710448/6144372 请:)以上是关于如何一次将从 Firebase 检索到的数据存储在 ArrayList<String> 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将从表单提交中检索到的参数作为参数传递给 django 中的函数