无法使用Firebase向ArrayList添加元素

问题描述 投票:1回答:2

我在Firebase数据库上有一个名为Numbers的孩子。

在我的代码中,我不明白如果在onDataChange()方法中,listNumber.size()返回4.但是在listNumber.size()的onDataChange()值之外返回0。

java android firebase firebase-realtime-database
2个回答
3
投票

onDataChange是一个监听器,它不会立即被调用,它是在Firebase返回数据后调用的。

因此执行顺序如下所示:

  1. 向Firebase发出请求并添加侦听器。数据不存在。
  2. 请求后执行代码(//result = 0
  3. Firebase已返回数据,因此正在调用您的侦听器(//result = 4

1
投票

这是异步编程。 Firebase异步执行其方法,它不会等待数据,因为从服务器获取数据可能需要很长时间。因此,当您在onDataChanged方法之外调用变量时,不会为其分配任何值。因此,它保持为空。

您可以将该语句带到onDataChanged方法。您还可以使用setter和getter方法创建模型类。通过调用onDataChanged中的模型类的setter来设置变量的值,并在onDataChanged之后调用getter方法来获取值。

© www.soinside.com 2019 - 2024. All rights reserved.