Android Firestore微调不加载我的文档
问题描述:
所以,我分配了我的var微调控制器数组从我的文档中获取数据在firestore,但这是我得到的。Android 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不过也有火力地堡经验数据库和Kotlin。根据我的经验,我可以清楚地告诉你,你不会直接接收你的数组,因为在主线程上没有完成数据的提取。目前,您的spinnerArray拥有对Firebase任务的引用,这就是您的Spinner显示此类文本的原因。
为了让您在您的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可为空属性
您好,感谢您的回复。我确实尝试过,但是if语句中的spinnerArray出现错误。 “类型检查遇到了递归问题”。我把这段代码放入我的var spinnerArray中。这就是我应该做的对吗? – AndyFire
我这样做,但仍然得到一个奇怪的结果(看看我的EDIT)谢谢 – AndyFire
在.result必须添加此var spinnerArray = task.result作为Array>是错误的吗? –
AndyFire