【问题标题】:Firebase OnDataChangeFirebase OnDataChange
【发布时间】:2017-07-12 09:05:50
【问题描述】:

我有一个 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() 中可用?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案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());
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 2017-09-13
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多