【问题标题】:retrive data from firebase从 firebase 检索数据
【发布时间】:2016-06-03 04:26:35
【问题描述】:

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

我想删除该唯一标识符并仅将结果显示为

苹果、芒果...等

谢谢

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案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) {

        }
    });

【讨论】:

    【解决方案2】:

    试试这个:

    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 检索您的所有数据

    已编辑:对不起,我忘了你有很多孩子,当你的节点中有很多孩子时,你需要 for (DataSnapshot snap: dataSnapshot.getChildren()) {//code}

    【讨论】:

    • 如果我使用 dataSnapshot.child("food").getValue().toString() 它会抛出 "java.lang.NullPointerException" 如果我​​使用 dataSnapshot.child('food').getValue( ).toString() 它抛出“字符文字中的字符太多”错误
    • 是的,对不起,你没有食物{ 1:apple, 2:mango} 我更新了答案
    猜你喜欢
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多