首页 > 解决方案 > 从 dataSnapshot 中的 dataSnapshot 中提取值

问题描述

我无法从数据快照中的 Firebase 数据库数据快照中获取字符串值。我想遍历“表”数据快照中的键,然后使用每个键在另一个数据快照中打印一个值。我从内部快照打印的值是正确的,但它不适用于我想要分配给它的外部快照和变量。有没有更正确的方法来做到这一点?这是我正在尝试的示例:

String extracted;
String key;

onCreate(){

DatabaseReference dbRef1 = FirebaseDatabase.getInstance().getReference().child("Table");

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

                for (DataSnapshot data : dataSnapshot.getChildren()){
                    key = data.getKey();

                    DatabaseReference dbRef2 = FirebaseDatabase.getInstance().getReference().child(key);

                    databaseReference.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            extracted = dataSnapshot.getValue().toString();
                            System.out.println(extracted);//prints correct value
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                    System.out.println(extracted); //prints null
                }
            }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


推荐阅读