2

我正在使用 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 设备上,我也不想这样做。我怎样才能让数据快照作为我可以迭代的东西返回,并在不使用唯一键的情况下获取组名?

4

1 回答 1

4

Map转换为List非常简单。

试试这个代码:

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()没有削减它,您还可以传入一个 Java 类,客户端将尝试使用Jackson将其反序列化到该类中。

于 2015-01-06T23:10:29.793 回答