Как читать данные из Firebase ONCE с помощью java/android?
Я пытаюсь использовать Java API для чтения данных из базы данных Firebase в приложении Android в событии onCreate(). Другими словами, я пытаюсь сделать простейшее чтение возможным, эквивалент...
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 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) {
}
.. так же, как если бы я использовал событие ref.once('value', function(snapshot)
в Javaxcript API.
Ответы
Ответ 1
Это правильный метод, и вы на правильном пути. Именование просто немного запутанно (извините!). Если вы создадите 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()) {
...
}
}
}