我正在尝试在 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/