【问题标题】:How to display data which the data is inside node child in fragment?如何在片段中显示数据在节点子节点内的数据?
【发布时间】:2019-03-20 13:37:44
【问题描述】:

我在片段中显示所有数据的编码:-

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Advertisement").child("tuitionPackages").child("0");

    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists() && dataSnapshot.getChildrenCount() > 0) {

                Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();

                String academicLevel,packageStatus,price,subjects;

                if (map.get("packageStatus") != null) {
                    packageStatus = map.get("packageStatus").toString();
                    mPackageType.setText(packageStatus);
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }

    });

我的数据库:-

我的输出显示学费包:-

【问题讨论】:

  • 问题陈述有点不清楚,您想在数据库图像中显示您选择的节点内的数据吗?
  • @PradyumanDixit 是的,我想在我的 Fragment 中显示学费包...
  • >有两种情况 AFAIK 你已经获取数据并将其发送到片段创建一个 xml 并给每个视图一个唯一的 id 并将每个值分配给它对应的广告属性第二个是你可以需要一种根据广告 id 在此处获取数据的方法。按照我上面的建议获取并显示。
  • @XarEAhmer,对不起,我真的不明白。你能请一些编码示例吗?
  • 首先添加您传递此片段的活动代码以及当前片段的布局和完整代码文件,然后我们将能够了解您在做什么。

标签: android firebase android-studio firebase-realtime-database fragment


【解决方案1】:

您可以尝试使用此代码从您的 firebase 数据库中获取数据,然后您可以使用该数据来完成片段中的字段。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Advertisement").child(ID1).child(ID2).child("tuitionPackages");

ref.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                       String acadLvl = dataSnapshot.child("academicLevel").getValue(String.class);
                       String packStatus = dataSnapshot.child("packageStatus").getValue(String.class);
                       int price = dataSnapshot.child("price").getValue(Integer.class);
                       String sub = dataSnapshot.child("subjects").getValue(String.class);

                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

在这段代码中,ID1ID2 是我可以在节点 Advertisement 下的数据库图像中看到的字符串。

【讨论】:

  • @Daisy 为什么会这样,有什么问题?
  • 数据没有显示在我的片段中
  • @Adda 将答案标记为正确并投票。这有助于有类似问题的未来 SO 读者,我也将不胜感激。干杯! :)
【解决方案2】:

试试这个,

 DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Add your root element").child("tuitionPackages").child("0");

String academicLevel,packageStatus,price,subjects;

            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists() && dataSnapshot.getChildrenCount() > 0) {
                        Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
                        if (map.get("academicLevel") != null) {
                            academicLevel = map.get("academicLevel").toString();
                            textView.setText(academicLevel);
                        }

                        if (map.get("packageStatus") != null) {
                            packageStatus = map.get("packageStatus").toString();
                            textView1.setText(packageStatus);
                        }

                        if (map.get("price") != null) {
                            price = map.get("price").toString();
                            textView2.setText(price);
                        }

                        if (map.get("subjects") != null) {
                            subjects = map.get("subjects").toString();
                            textView3.setText(subjects);
                        }
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                }

            });

希望对你有帮助。

【讨论】:

  • 我会尝试,1 分钟 :D 但是为什么会有“密码”?
  • 添加根和子根元素。
  • 哦,我明白了,5 分钟,我现在试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2018-07-29
相关资源
最近更新 更多