AndroidアプリケーションでFirebase ValueEventlistenerを使用してデータベースからデータを取得してUIを初期化していますが、データフェッチが完了してユーザーのインターネット接続の速度に依存するリスナーがデータの取得を終了するのに5秒間遅れますが、時には十分ではなく、データがヌルポインター例外を与えてもまだnullです。 Firebase ListenerがUIを更新できるようにデータを取得するタイミングを知りたい。Firebase Listenerがデータの取得を終了したかどうかを検出する方法は?
は、これは私がデータをフェッチする一つの方法である:ここで私はのアダプタにのArrayListを渡すことによって、UIを初期化できるようにするのArrayListにFirebaseリスナーからデータを取得しよう
public void GetRequests(){
Retrieve.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> Games = dataSnapshot.getChildren();
for(com.google.firebase.database.DataSnapshot game : Games){
String Game_Key = game.child("GameKey").getValue(String.class);
String Game_Location = game.child("Location").getValue(String.class);
String UserID_Sender = game.child("UserID").getValue(String.class);
Adapter_Game_Key.add(Game_Key);
Adapter_UserID_Sender.add(UserID_Sender);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
リストビュー。
誰にでも解決策がありますか?
ファイアベースのリスナーはデータを同期するため、厳密に言えば決して終わらない。一方、 'onDataChange'が起動するたびに、データベースから完全なデータセットが得られます。そのため、それらのそれぞれを「完了」しておくことができます。あなたがどこにいるのかを再現する最小限のコードを共有すれば、おそらくあなたを助けるほうが簡単でしょう(http://stackoverflow.com/help/mcve)。 –
@FrankvanPuffelenコードを編集してコードスニペットを追加しました。見てください –