Firestore позволяет загружать только один документ

Итак, почему я могу назвать любую пару значений ключа из этого , но не могу из этого ?

Это мой код

var firstKitList = mutableListOf<String>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_kit_list) val mainKitList = kitListView val mainListViewAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, firstKitList) mainKitList.adapter = mainListViewAdapter db1.collection("cities").get().addOnSuccessListener { snapshot -> for (document in snapshot.documents) { val data = document.data val country = data["USA"] as String firstKitList.add(country) } mainListViewAdapter.notifyDataSetChanged() } 

Если я переключу «города» для «KitList» и val country = data["USA"] as String для val rope = data["skipping"] as String это работает … Может ли кто-нибудь объяснить это мне, пожалуйста?

1-й ответ: В ваших данных firestore я не вижу данных для ключа «США» и «пропуска». Вы уверены, что эти данные верны?

Ответ на второй вопрос. Я предлагаю вам создать класс данных с нужными вами полями. Затем вы можете сопоставить данные своего документа с вашим кодом с кодом:

 document.data.toObject(DataClass::class.java) 

Или, если в QuerySnapshot имеется несколько документов:

 val dataList = mutableListOf<DataClass>() querySnapshot.documents.mapTo(dataList) { it.toObject(DataClass::class.java)} 

Основываясь на вашем коде, вы можете сделать это:

 querySnapshot.documents.mapTo(firstKitList) { it.toObject(DataClass::class.java)} 

@ Edit1 это модель данных:

 class City(var cityId: String, var state: String, var name: String, var country: String) { //remember to add empty constructor. constructor() : this("", "", "", "") } 

Когда вы нажимаете на список на этом элементе, создайте Intent со всеми этими данными и начните новое действие.

@ Edit2 Если вы хотите добавить документ с определенным идентификатором:

 FirebaseFirestore.getInstance().collection("collectionName") .document("documentId, for example LA").set(city) 

Если вы хотите передать id предыдущей деятельности, узнайте что-нибудь о методе startActivityForResult 🙂