我有一个名为:玩家的收藏集 在其中,每个文档都有posx和posy的值
我想为每个文档创建一个带有数组的数组 像:[[posx1,posy1] [[posx,posy2] ...]
如果我在.addOnSuccesListener里面放了一个打印,它可以工作并打印列表,但是 当我在外面时,我尝试打印列表时,它返回空
我做错了什么?谢谢
val myDB = FirebaseFirestore.getInstance()
var posiciones = ArrayList<Array<String>>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
myDB.collection("players")
.get()
.addOnSuccessListener { result ->
for (document in result) {
posiciones.add(
arrayOf(
document.get("posx").toString(),
document.get("posy").toString()
)
)
}
}
.addOnFailureListener { exception ->
Log.d(ContentValues.TAG, "Error getting documents: ", exception)
}
//i get []
println("Testing: "+ posiciones)
答案 0 :(得分:1)
这是因为get
是异步并立即返回 。您的代码将继续执行println
,然后再进行其他操作。 posiciones
那时将为空。然后,一段时间后,当查询完成且数据库结果可用时,将调用成功回调,并填充数组。只有在收到回调之后,才可以阅读posiciones
的内容。