从Firebase DB检索数据并存储在本地变量中:Android

时间:2016-08-29 07:24:23

标签: android firebase firebase-realtime-database

我的应用将用户位置数据存储在Firebase Realtime Database中。我打算做的是检索一些数据并在我的应用程序中处理它。我可以从Firebase DB中获取所需的数据(通过调试检查)。现在我想将数据存储在局部变量中。我能够存储除一个值之外的所有值(调试器将其显示为null,尽管它存在于datasnapshot中。)。来自Firebase的数据采用UserDataLocation对象形式,以下是相同的类:

UserDataLocation课程:

public class UserLocationData {

    String mobile, name, latitude, longitude, proximity, connection_limit, last_updated;

    public UserLocationData() {
    }

    public UserLocationData(String mobile, String name, String latitude, String longitude, String proximity, String connection_limit, String last_updated) {

        this.mobile = mobile;
        this.name = name;
        this.latitude = latitude;
        this.longitude = longitude;
        this.proximity = proximity;
        this.connection_limit = connection_limit;
        this.last_updated = last_updated;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getProximity() {
        return proximity;
    }

    public void setProximity(String proximity) {
        this.proximity = proximity;
    }

    public String getConnection_limit() {
        return connection_limit;
    }

    public void setConnection_limit(String connection_limit) {
        this.connection_limit = connection_limit;
    }

    public String getLast_updated() {
        return last_updated;
    }

    public void setLast_updated(String last_updated) {
        this.last_updated = last_updated;
    }
}

以下是我检索和存储数据的方法:

                   @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        for (DataSnapshot child : dataSnapshot.getChildren()) {

                            userLocationData = child.getValue(UserLocationData.class);
                            String connectionKey = child.getKey();

                            if (!connectionKey.equals(currentUserMobile)) {

                                for (int count = 0; count <= Integer.parseInt(connections_limit); count++) {

                                    **String last_updated = userLocationData.last_updated;** //this is showing null in debugger

                                    Location connectionLocation = getLocationFromLatLng(userLocationData.latitude, userLocationData.longitude);

                                  {......}
                              }
                            }
                        }
                    }
                }

String last_updated = userLocationData.last_updated;之外的所有变量都有价值。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

我已经解决了我的问题。错误很小但很重要。实际上,我使用last updated作为存储上次更新时间的密钥。问题在于这个密钥的格式。它应该是last_updated或其他内容,但似乎firebase数据库认为spaces的密钥无效。所以,我将我的密钥更改为last_updated并解决了问题。

希望它有所帮助。