我正在使用Firebase for Android制作涉及群组的应用 我的firebase中有一个使用push方法推送的项目列表,如下所示:
-Groups Joined:
~Unique Key: Group 1 Name
~Unique Key: Group 2 Name
我正在尝试在我的Android代码中将此列表检索为Java列表。我需要能够通过索引而不是使用唯一键访问Groups Joined节点中的信息,我正在使用此代码。
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设备上存储这些唯一的密钥,我不想这样做。如何将数据快照作为我可以迭代的内容返回并获取组名而不必使用唯一键?
答案 0 :(得分:4)
试试这段代码:
myUserRef.child("Groups Joined").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
// do some stuff once
Map groupNames = snapshot.getValue();
List groupNamesList = new ArrayList(groupNames.values());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
如果snapshot.getValue()
的默认行为没有删除它,您也可以pass in a Java class,客户端将尝试使用Jackson将其解压缩到该类中。