Android Firestore微调不加载我的文档

所以,我分配了我的var微调控制器数组从我的文档在firestore中获取数据,但这是 结果 我明白了

这是我目前的活动。 我可以让它工作,如果我分配字符串,但最终我想从我的文档加载数据,就像我现在要做的。

这是我的 公司的FireStore 建立。

任何原因为什么? 谢谢

var db = FirebaseFirestore.getInstance() var spinnerArray = arrayOf(db.collection("KitList") .get() .addOnCompleteListener { task -> if (task.isSuccessful) { for (document in task.result) { Log.d("weight05", document.id + " => " + document.data) } } else { Log.w("error", "Error getting documents.", task.exception) } }) var newKitList = mutableListOf<String>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_new_kit_list) var addButton = addKitItemBtn val spinner = newKitItemSpinner val spinnerArrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray) //selected item will look like a spinner set from XML spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = spinnerArrayAdapter val kitList = newKistListView val listViewAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, newKitList) kitList.adapter = listViewAdapter addButton.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View?) { val selectedItem = spinner.selectedItem.toString() newKitList.add(selectedItem) listViewAdapter.notifyDataSetChanged() } }) 

==============

编辑

 var spinnerArray: Array<Task<QuerySnapshot>> = arrayOf(db.collection("KitList").get() .addOnCompleteListener { task -> if (task.isSuccessful) { spinnerArray = task.result as Array<Task<QuerySnapshot>> //or however you get your document array for (document in task.result) { Log.d("weight05", document.id + " => " + document.data) } } else { Log.w("error", "Error getting documents.", task.exception) } }) 

嘿,安迪我还没有使用FireStore,但有Firebase数据库和Kotlin的经验。 根据我的经验,我可以清楚地告诉你,你将不会直接接收你的数组,因为在主线程上没有获取数据。 目前你的spinnerArray拥有引用Firebase的任务,这就是为什么你的微调显示这样的文字。

为了让你的数组在你的spinnerArray变量,你需要得到它,当你的任务是成功的,即有点像这样

编辑:删除你的var spinnerArray初始化,并做我已经添加微调的适配器。

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_new_kit_list) var addButton = addKitItemBtn val spinner = newKitItemSpinner val spinnerArrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray) //selected item will look like a spinner set from XML spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = spinnerArrayAdapter val kitList = newKistListView val listViewAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, newKitList) kitList.adapter = listViewAdapter addButton.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View?) { val selectedItem = spinner.selectedItem.toString() newKitList.add(selectedItem) listViewAdapter.notifyDataSetChanged() } }) db.collection("KitList") .get() .addOnCompleteListener { task -> if (task.isSuccessful) { spinnerArray = task.result //or however you get your document array var spinnerArray = task.result as Array<Task<QuerySnapshot>> val spinnerArrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray) //selected item will look like a spinner set from XML spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = spinnerArrayAdapter for (document in task.result) { Log.d("weight05", document.id + " => " + document.data) } } else { Log.w("error", "Error getting documents.", task.exception) } } } 

在onCreate中调用这段代码,并将spinnerArray初始化为可空属性