来自firebase的反向数据

时间:2016-05-27 15:19:10

标签: android firebase firebase-realtime-database

我是android开发的新手。我尝试从firebase中检索数据。哪个有效。但是我无法从数据库结果中过滤唯一标识符。

   FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myref = database.getReference("user_foods");
        myref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d("foods",dataSnapshot.getValue().toString());
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

结果就像

  

XsgGhY7qUY5Qa3t8 = {food = apple},..... etc

我想删除该唯一标识符&只显示结果

  

Apple,Mango ......等

谢谢

2 个答案:

答案 0 :(得分:1)

我找到了答案。如果有人有同样的问题,请使用“儿童事件监听器”

 FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myref = database.getReference("user_foods");
    myref.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Log.d("foods",dataSnapshot.getValue().toString());

        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

答案 1 :(得分:0)

试试这个:

FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myref = database.getReference("user_foods");
        myref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
              for (DataSnapshot snap: dataSnapshot.getChildren()) {
                Log.d('foods',dataSnapshot.child('food').getValue().toString());
              }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

将child()添加到您的引用中,您可以访问树中的特定键。但正如Frank建议尝试使用POJO类从Firebase检索所有数据

编辑:抱歉,我忘记你有很多孩子,当你的节点中有很多孩子时,你需要为(DataSnapshot snap:dataSnapshot.getChildren()){// code}做准备