如何使用Kotlin在Firestore中创建值列表

时间:2019-06-09 15:51:54

标签: android database kotlin google-cloud-firestore

我有一个名为:玩家的收藏集 在其中,每个文档都有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)

1 个答案:

答案 0 :(得分:1)

这是因为get异步并立即返回 。您的代码将继续执行println,然后再进行其他操作。 posiciones那时将为空。然后,一段时间后,当查询完成且数据库结果可用时,将调用成功回调,并填充数组。只有在收到回调之后,才可以阅读posiciones的内容。