【发布时间】:2015-01-04 01:04:57
【问题描述】:
我正在使用 Firebase for Android 制作一个涉及群组的应用 我的 firebase 中有一个使用 push 方法推送的项目列表,如下所示:
-Groups Joined:
~Unique Key: Group 1 Name
~Unique Key: Group 2 Name
我正在尝试在我的 android 代码中将此列表检索为 Java 列表。我需要能够通过索引而不是唯一键访问加入的组节点中的信息,我正在使用此代码。
Query groupsJoined = myUserRef.child("Groups Joined").orderByKey();
groupsJoined.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
// do some stuff once
groupNames = (ArrayList<String>) snapshot.getValue();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
代码崩溃是因为 snapshot.getValue() 返回了一个 map 类型的对象。我无法访问地图的元素,因为我没有将这些唯一键存储在 android 设备上,我也不想这样做。我如何才能将数据快照作为可以迭代的东西返回并从中取出组名,而不必使用唯一键?
【问题讨论】:
-
您可以遍历
Map的值 - 这还不够吗?见docs.oracle.com/javase/7/docs/api/java/util/Map.html#values()。 -
组自然是按键排序的,所以这里的查询是没有必要的。你都尝试了些什么?数据很容易迭代。特别是考虑到 getChildren() 返回 Iterable。此外,您可能希望添加子事件而不是单值事件。
标签: android firebase firebase-realtime-database