Firebase数据库读取数据

时间:2018-10-23 04:50:45

标签: android firebase firebase-realtime-database

我正在尝试从Firebase实时数据库中读取一些值。 我的结构如下:

enter image description here

和我的代码来检索值(“葡萄酒和美食”):

databaseReference.child("test").child("event_name").child("drinks")
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    Object dataSnapshotObject = dataSnapshot.getValue(String.class);

                   if(dataSnapshotObject != null){
                    Toast.makeText(content, "Event Name: " + dataSnapshotObject.toString(), Toast.LENGTH_LONG).show();
                   }else
                    Toast.makeText(context,"null",Toast.LENGTH_SHORT).show();

              }

                @Override
                public void onCancelled(DatabaseError databaseError) {
            });

但是,我只得到一个空响应作为值。我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

您可以将.child("drinks")从链中删除(然后放入下面的代码中,如下面的代码所示),并且无论如何要将dataSnapshotObject更改为String,则应该检索放在String中。

类似这样的东西:

String value = dataSnapshot.child("drinks").getValue(String.class);

还要检查您的databaseReference是否看起来像这样。

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();

答案 1 :(得分:0)

您可以使用addListenerForSingleValueEvent来获取值

代码示例:

FirebaseDatabase.getInstance().getReference().child("test").child("event_name").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            HashMap hashUser = (HashMap) dataSnapshot.getValue();
            if (hashUser != null) {
                String Drinks = hashUser.get("drinks").toString();
                //Toast.makeText(this, Drinks , Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });