如何显示片段中节点子内部的数据?

时间:2018-10-16 05:17:10

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

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

    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) {
        }

    });

我的数据库:-

enter image description here

我的显示学费包的输出:-

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试一下

 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 :(得分: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下的数据库映像中看到的字符串。