首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从具有多个子级的防火墙中提取数据?

如何从具有多个子级的防火墙中提取数据?
EN

Stack Overflow用户
提问于 2019-01-11 07:38:29
回答 2查看 77关注 0票数 0

我正试图从我的火炉实时数据库中提取数据。这里我面临的问题是,我可以成功地从/ItemList中提取数据,但是当我试图从/ItemRequest中提取数据时,数据不能被提取,但是当我给它一个特定的路径(如/ItemRequest/admin )时,它就能工作了。我想要做的是用来自/ItemRequest的来自管理员和用户的所有子程序填充一个列表视图,我正在使用firebase列表适配器来填充我的列表视图,那么有什么方法可以做我想做的吗?

数据库布局

EN

Stack Overflow用户

回答已采纳

发布于 2019-01-11 08:09:15

我想要做的是用来自/ItemRequest的来自admin和user的所有子视图填充一个listview。

要解决这个问题,您需要对DataSnapshot对象进行两次迭代,如下所示:

代码语言:javascript
运行
复制
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference itemRequestRef = rootRef.child("ItemRequest");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
            for(DataSnapshot ds : dSnapshot.getChildren()) {
                String productName = ds.child("ProductName").getValue(String.class);
                Log.d(TAG, productName);
            }
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
itemRequestRef.addListenerForSingleValueEvent(valueEventListener);

logcat中的输出将是:

代码语言:javascript
运行
复制
Manix
Manix
Manix

如果您想在ListView中显示这些结果,请参阅我在这篇文章中的回答:

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54142198

复制
相关文章

相似问题

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