java - 如何使用 java/android 从 Firebase ONCE 读取数据?

标签 java android events listener firebase

我正在尝试在 onCreate() 事件中使用 Java API 从 Android 应用程序中的 Firebase 数据库中读取数据。换句话说,我正在尝试做最简单的阅读,相当于...

ref.once('value', function(snapshot) {

});

...在 Javascript API 中。我正在尝试使用 addEventListenerForSingleValueEvent() 方法,但它似乎希望我覆盖 onDataChange() 方法,这不是我想要的。无论数据库事件如何,我都想在程序执行到达这一行时取出数据。这是我的(未完成的)功能......

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.poll_table);    

        // First get the table layout
        tbl = (TableLayout) findViewById(R.id.pollsTable);

        // Now let's create the header
        TableRow tHead = createPollsTableHeader();

        // Add header to tableLayout
        tbl.addView(tHead, new TableLayout.LayoutParams(
                LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT));

        // Add all polls in ref as rows
        polls.addListenerForSingleValueEvent(new ValueEventListener() {
            // DON'T KNOW WHAT TO DO HERE

        }
    }

我什至不认为这是正确的方法。我只是希望能够获得一个可以迭代并从中获取数据的 Datasnapshot,例如...

for (Datasnapshot child : datasnapshot) {
}

..就像我在 Javaxcript API 中使用 ref.once('value', function(snapshot) 事件一样。

最佳答案

这是正确的方法,而且您走在正确的轨道上。命名只是有点困惑(对不起!)。如果您执行 addListenerForSingleValueEvent,您重写的 onDataChange 方法将使用 DataSnapshot 仅调用一次,正如您所希望的(就像“ref.once('value' ...)”会做的那样)。

所以你应该可以做到:

// Add all polls in ref as rows
polls.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        for (DataSnapshot child : snapshot.getChildren()) {
            ...
        }
    }
}

关于java - 如何使用 java/android 从 Firebase ONCE 读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17904613/

相关文章:

java - 向 java 服务器发出 HTTP OPTIONS 请求

JavaMail 无效的 MSGID

java - 在 Java 中切换 boolean 变量的最简洁方法?

java - 改进嵌套枚举定义

java - 测试多个EditText是否为空

c# - ObservableCollection<T> 未收到有关 <T> 属性更改的通知

android - 操作栏样式的溢出菜单项

java - Android基于baseAdapter在FRAGMENT中自定义Layout

未处理 JavaFX onKeyPressed 事件

javascript - 如何在 jQuery 中向 `change` 事件添加属性