java - 将接收到的数据集导出到数组

标签 java dataset export firebase

我需要将 Firebase 数据集中的数据导出到数组。这是我的代码:

Firebase fb = new Firebase("https://----.firebaseio.com/");
Query q = fb.orderByKey();

q.addValueEventListener(new ValueEventListener() {

    @Override
    public void onDataChange(DataSnapshot snapshot) {
        iterator = snapshot.getChildren().iterator();
        while (iterator.hasNext()) {
            // The code I need goes here
        }

    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {
        System.out.println("The read failed: " + firebaseError.getMessage());
    }
});

此代码位于一个应该返回数据数组的方法内,但是将其导出到封闭方法中的局部变量并不能完成这项工作。有人有更好的方法吗?提前致谢。

最佳答案

回调将被异步调用,这意味着它可能不会在您的方法完成之前发生。

听起来您想要一个方法,在调用时将查询数据的最新状态。您可以做的是创建 Firebase 连接并将监听器附加到您的方法外部(可能在您的 main 方法内部),然后让您的方法查询监听器以获取最新数据。

class CustomValueListener implements ValueEventListener {    
    private volatile DataSnapshop data; //accessed from multiple threads
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        data = snapshot;
    }    
    @Override
    public void onCancelled(FirebaseError firebaseError) {}
    public DataSnapshot getLatestData() {
        return data;
    }
}
private CustomValueListener listener = new CustomValueListener();

public static void main(String...args) {
     ...     
     Firebase fb = new Firebase("https://----.firebaseio.com/");
     Query q = fb.orderByKey();    
     q.addValueEventListener(listener);
     ...
}
String[] yourMethod() {
     ...
     Sring[] result = ...
     DataSnapshot snapshot = listener.getLatestData();
     if (snapshot != null) {
        iterator = snapshot.getChildren().iterator();
         while (iterator.hasNext()) {
            //now you can copy the data into the array 
         }
     }
     return result;
}

关于java - 将接收到的数据集导出到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27683279/

相关文章:

java - Java SDK 和运行时的正确路径 env

c# - asp.net 从数据集创建单选按钮

mysql导出单独创建表并更改

java - 如何使用 assertJ 递归地比较忽略给定字段的列表?

java - 如何在 Java 应用程序中创建堆转储?

java - spring.core 的这个模块定义有什么问题?

c# - 将关系数据集转换为 List<T>

dataset - 公共(public)数据集至 'practice'

javascript - 如何修复 'Objects are not valid as a React child (found: object with keys )'

macos - -bash : export: `=' : not a valid identifier