无法使用Firebase向ArrayList添加元素

时间:2016-09-04 09:11:40

标签: java android firebase firebase-realtime-database

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

child numbers

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

my code:

2 个答案:

答案 0 :(得分:3)

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

所以执行顺序如下:

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

答案 1 :(得分:1)

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

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