我在Android应用程序中使用Firebase ValueEventlistener从数据库中检索一些数据以初始化我的用户界面,但我的问题是,我永远不知道数据提取何时完成,取决于用户的Internet连接速度,我为Listeners完成获取数据的延迟时间为5秒,但有时这还不够,并且数据仍然为空,从而产生空指针异常。我想知道Firebase侦听器何时完成抓取数据以更新我的用户界面。如何检测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) {
}
});
}
在这里,我试图让从火力地堡听众的数据一个ArrayList能够通过传递的ArrayList到的一个适配器来初始化UI列表显示。
任何人都有这方面的解决方案吗?
Firebase侦听器同步数据,因此他们严格来说从未完成。另一方面:每次'onDataChange'触发时,您都会从数据库中获取一组完整的数据 - 因此您可以将每个数据都视为“已完成”。如果您分享[重现您卡住的最小代码](http://stackoverflow.com/help/mcve),则可能更容易帮助您。 –
@FrankvanPuffelen我编辑了代码并添加了代码片段,请看看 –