Android 从firebase检索数据

Android 从firebase检索数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我是android开发的新手。我试着从firebase检索数据。这起作用了。但我无法从数据库结果中筛选唯一标识符 FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myref = database.getReference("user_foods"); myref.addListenerForSingleValueEvent(new ValueEvent

我是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}。。。。。等

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

苹果、芒果等

谢谢

试试这个:

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}我找到了答案。如果任何人有相同的问题,请使用“子事件侦听器”


请参阅无法使用getValue().get()方法,正如Frank建议使用子事件侦听器所做的,如果我使用dataSnapshot.child(“食物”).getValue().toString()它会抛出“java.lang.NullPointerException”,如果我使用dataSnapshot.child(“食物”).getValue().toString()它抛出“字符文字中的字符太多”错误是,抱歉放弃你的食物{1:苹果,2:芒果}我更新了答案
 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) {

        }
    });