Java 无法使用Firebase将元素添加到ArrayList
我有一个孩子叫Firebase数据库上的数字 在我的代码中,我不明白在onDataChange方法中,listNumber.size是否返回4。但在listNumber.size的onDataChange值之外返回0Java 无法使用Firebase将元素添加到ArrayList,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有一个孩子叫Firebase数据库上的数字 在我的代码中,我不明白在onDataChange方法中,listNumber.size是否返回4。但在listNumber.size的onDataChange值之外返回0 onDataChange是一个侦听器,不会立即调用,而是在Firebase返回数据后调用 因此,执行顺序如下所示: 向Firebase发出请求并添加侦听器。数据不存在。 请求后执行代码//结果=0 Firebase已返回数据,因此将调用您的侦听器//结果=4 onDataChang
onDataChange是一个侦听器,不会立即调用,而是在Firebase返回数据后调用 因此,执行顺序如下所示: 向Firebase发出请求并添加侦听器。数据不存在。 请求后执行代码//结果=0 Firebase已返回数据,因此将调用您的侦听器//结果=4
onDataChange是一个侦听器,不会立即调用,而是在Firebase返回数据后调用 因此,执行顺序如下所示: 向Firebase发出请求并添加侦听器。数据不存在。 请求后执行代码//结果=0 Firebase已返回数据,因此将调用您的侦听器//结果=4
这是异步编程。 Firebase异步执行其方法,它不等待数据,因为从服务器获取数据可能需要很多时间。因此,在调用onDataChanged方法之外的变量时,它没有被赋值。 因此,它是空的 您可以将语句带到onDataChanged方法。您还可以使用setter和getter方法创建一个模型类。
通过在onDataChanged中调用模型类的setter来设置变量的值,并在onDataChanged之后调用getter方法以获取值。这是异步编程。 Firebase异步执行其方法,它不等待数据,因为从服务器获取数据可能需要很多时间。因此,在调用onDataChanged方法之外的变量时,它没有被赋值。 因此,它是空的 您可以将语句带到onDataChanged方法。您还可以使用setter和getter方法创建一个模型类。
通过在onDataChanged中调用模型类的setter来设置变量的值,并在onDataChanged之后调用getter方法以获取值。请不要将代码作为图像发布,而是将其作为格式化文本发布。基本上,如果将底线移到Firebase调用上方,则会得到相同的结果。最好学习和理解异步代码的工作原理。请不要将代码作为图像发布,而是作为格式化文本发布。基本上,如果将底线移到Firebase调用上方,您将得到相同的结果。学习和理解异步代码的最佳方式