无法在firebase数据库中检索值

时间:2017-11-05 15:21:31

标签: android firebase-realtime-database

我在android中使用firebase来保存用户信息并检索它。 我从firebase数据库中获取了值,但它没有转换为我的POJO类

UserInformation.java

public class UserInformation {
private String phoneNo;
private String address;


public UserInformation() {
}

public UserInformation(String address, String phoneNo) {
    this.phoneNo = phoneNo;
    this.address = address;
}

public String getPhoneNo() {
    return phoneNo;
}

public String getAddress() {
    return address;
 }
}

ValueEventListener

 public ValueEventListener displayUserData() {
    return new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                UserInformation userInformation = 
                dataSnapshot.getValue(UserInformation.class);
                mEtAddress.setText(userInformation.getAddress());
                mEtPhoneNo.setText(userInformation.getPhoneNo());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    };
}

enter image description here

数据快照未转换为UserInformation.class。我正在获取所有空值。

1 个答案:

答案 0 :(得分:0)

您似乎将侦听器附加到JSON树中UserInformation节点上方一级。在这种情况下,结果包含一个带有 快照列表的快照。即使只有一个快照,您的代码也需要处理它是一个列表的事实。

public ValueEventListener displayUserData() {
    return new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
                UserInformation userInformation = 
                userSnapshot.getValue(UserInformation.class);
                mEtAddress.setText(userInformation.getAddress());
                mEtPhoneNo.setText(userInformation.getPhoneNo());
            }
        }