如何在Android Studio的Firebase数据库中检索1个孩子以下的数据列表

时间:2018-06-29 09:27:45

标签: android firebase firebase-realtime-database

存储在Firebase中的数据:

 29-06-2018(date)

     -AAAA
           -25142(jobno)
           -Park station(address)
           -BMW(model)

     -BBBB 
           -85142(jobno)
           -Base station(address)
           -Ford(model)

在这里,我希望所有-BBBB以下的孩子。不想循环通过AAAA。如何直接获得BBBB的孩子。我有数据(日期,BBBB)。只想获取BBBB的工作编号,地址,型号。请给我建议解决方案。

我的代码在这里

DatabaseReference database = FirebaseDatabase.getInstance().getReference();
        DatabaseReference pwd = database.child("29-06-2018").child("BBBB");

        pwd.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot ds : dataSnapshot.getChildren()) {    
                        String a = ds.child("jobno").getValue(String.class);
                        String b = ds.child("address").getValue(String.class);
                        String c = ds.child("model").getValue(String.class);

                }
            }

            @Override
            public void onCancelled(DatabaseError error) {

            }

        });

2 个答案:

答案 0 :(得分:1)

您正在听一个小孩/29-06-2018/BBBB。通过遍历dataSnapshot.getChildren(),您遍历了每个属性,然后尝试为每个属性找到一个子属性。那是行不通的,因此您应该摆脱onDataChange中的循环:

pwd.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot ds) {
        String a = ds.child("jobno").getValue(String.class);
        String b = ds.child("address").getValue(String.class);
        String c = ds.child("model").getValue(String.class);
    }

答案 1 :(得分:0)

DatabaseReference database = FirebaseDatabase.getInstance().getReference();
        DatabaseReference pwd = database.child("29-06-2018").child("BBBB");

        pwd.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                        String a = dataSnapshot.child("jobno").getValue(String.class);
                        String b = dataSnapshot.child("address").getValue(String.class);
                        String c = dataSnapshot.child("model").getValue(String.class);


            }

            @Override
            public void onCancelled(DatabaseError error) {

            }

        });