Java APIを使用して、Android onCreate()イベントのアプリケーションで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を使用して、希望どおりに1回だけ呼び出されます(「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()) {
...
}
}
}