如何使用java/安卓一次性从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)
事件一样
# 1 楼答案
这是正确的方法,你走在正确的轨道上。命名有点混乱(对不起!)。如果您执行addListenerForSingleValueEvent,您被重写的onDataChange方法将被调用一次,使用DataSnapshot,正如您所希望的那样(就像“ref.once('value')…)可以)
因此,您应该能够做到: