如何使用java/android一次性从Firebase读取数据?
我试图在onCreate()事件中使用Java API从Android应用程序中的Firebase数据库读取数据。换句话说,我正在尽可能地做最简单的阅读,相当于如何使用java/android一次性从Firebase读取数据?,java,android,events,listener,firebase,Java,Android,Events,Listener,Firebase,我试图在onCreate()事件中使用Java API从Android应用程序中的Firebase数据库读取数据。换句话说,我正在尽可能地做最简单的阅读,相当于 ref.once('value', function(snapshot) { }); …在Javascript API中。我试图使用addEventListenerForSingleValueEvent()方法,但它似乎希望我重写onDataChange()方法,这不是我想要的。我希望在程序执行达到这一行时,无论数据库事件如何,都能
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',函数(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()) {
...
}
}
}
我必须为(DataSnapshot-child:snapshot.getChildren())使用snapshot.getChildren(){@realgt-Oops,你说得对。更新了答案。谢谢!@MichaelLehenbauer你能通过从中获取数据来更新答案吗?@MichaelLehenbauer因此,如果你有两个相关的查询,例如从一个位置获取id并查询另一个集合以获取数据,那么我必须通过onDataC编写两个侦听器hange?嗨,我有一些类似的东西,到目前为止它还在工作,我只得到一次数据,但是如果我对数据进行更改(例如添加新元素)当我关闭应用程序并再次打开它时,我没有得到更新的数据。我确实有Internet连接,而且我确实将setPersistenceEnabled设置为true,因此它也可以脱机工作。如果有连接,我为什么不从后端获取信息?