Android Firestore微调不加载我的文档
所以,我分配了我的var微调控制器数组从我的文档在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初始化为可空属性
- 不能实现接口kotlin
- Kotlin – 如何为RecyclerVIew实现ItemClickListener
- 为什么使用DrawerLayout给IllegalArgumentException:DrawerLayout必须用MeasureSpec.EXACTLY
- Robolectric KeyStoreKeyGenerator
- “subs”类型的项目不能被使用。 回应:-1010:消费尝试无效
- 登录到kotlin android studio的firebase
- Kotlin在Android上使用MultiDex进行授权,低于21
- 如何在不同的类中共享相同的构造函数aka在接口中定义构造函数?
- Android:Kotlin:自定义webView – 不能作为函数调用。 找不到函数“invoke()”