Android Firestore Spinner не загружает мой документ

Таким образом, я назначил массив var spinner для получения данных из моего документа в 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 Database и Kotlin. И по моему опыту я могу четко сказать вам, что вы не получите свой массив напрямую, так как выборка данных не производится в основном потоке. В настоящее время ваш spinnerArray ссылается на задачу Firebase, поэтому ваш прядильщик показывает такой текст.

Чтобы получить свой массив в переменной spinnerArray, вам нужно получить его, когда ваша задача будет успешной, т.е.

EDIT: Удалите инициализацию 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 как свойство nullable