首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase数据检索

Firebase数据检索
EN

Stack Overflow用户
提问于 2015-01-04 09:04:57
回答 1查看 3.2K关注 0票数 2

我正在使用Firebase for Android制作一个涉及组的应用程序,我在firebase中有一个使用push方法推送的项目列表,如下所示:

代码语言:javascript
复制
-Groups Joined:
               ~Unique Key: Group 1 Name
               ~Unique Key: Group 2 Name

我试图在我的android代码中以Java列表的形式检索这个列表。我需要能够按索引访问Groups Joined节点中的信息,而不是使用唯一键,我正在使用此代码。

代码语言:javascript
复制
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()返回一个映射类型的对象。我没有办法访问地图的元素,因为我没有在android设备上存储这些唯一的键,我也不想这样做。如何才能在不使用唯一键的情况下,将数据快照作为可以遍历的内容返回,并从中获取组名?

EN

回答 1

Stack Overflow用户

发布于 2015-01-07 07:10:30

Map转换为List非常简单。

尝试以下代码:

代码语言:javascript
复制
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将其反编译到该类中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27761336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档