我有一个DialogFragment,并希望将来自Firebase数据库中特定位置的数据存储在ArrayList(变量arrList)中。我在onStart()方法中设置了一个值事件监听器并以DataSnaphsot(我不想使用REST)接收数据:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()){
Log.d("onDataChange", data.getValue().toString());
arrList.add(data.getValue().toString());
}
}
Log.d("onStart", arrList.toString());
我还有两个Log.d,它们应该打印ArrayList的内容:
onStart()中的一个(见上文) 一个在onDetach()
@Override
public void onDetach() {
super.onDetach();
Log.d("onDetach", arrList.toString());
}
结果:
D/onStart: []
D/onDataChange: name
D/onDataChange: surname
...
D/onDetach: [name, surname, ...]
如何填充ArrayList以便在onStart()中可用?
答案 0 :(得分:1)
firebase的监听器方法以异步方式运行尝试将onStart的日志放在onDataChange方法中,如下所示
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()){
Log.d("onDataChange", data.getValue().toString());
arrList.add(data.getValue().toString());
}
Log.d("onStart", arrList.toString());
}