Firestre solo me permite cargar un documento

Entonces, ¿por qué puedo llamar a cualquier par de key-valor de este , pero no puedo de este ?

Este es mi código

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() } 

Si cambio "cities" para "KitList" y val country = data["USA"] as String para val rope = data["skipping"] as String , funciona … ¿Alguien podría explicarme esto por favor?

Primera respuesta: En los datos de su Firerestre no veo datos para la key "USA" y "skipping". ¿Estás seguro de que estos datos son correctos?

Responda por la 2da pregunta. Le sugiero que cree una class de datos con los campos que desee. Luego, puede asignar los datos de su documento a su class con el código:

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

O bien, si tiene más de un documento en QuerySnapshot:

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

Basándose en su código, puede hacer esto:

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

@ Edit1 este es su model de datos:

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

Cuando toca en la list de este elemento, cree una intención con todos estos datos y comience una nueva actividad.

@ Edit2 Si desea agregar un documento con una identificación específica:

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

Si desea pasar el id a la actividad anterior, aprenda algo sobre el método startActivityForResult 🙂

  • ¿Por qué los texts no cambian en actividad?
  • Kotlin: ¿cómo se puede acceder externamente a las funciones de extensión dentro de un tipo?
  • Kotlin: exception de documento lanzada por un método de interfaz
  • asignar variable solo si es nulo
  • ¿Cuál es el propósito de que la reference de class enlazada devuelva un tipo covariante?
  • ¿Cómo verificar la class "instanceof" en kotlin?
  • Error al importar classs de código de proyecto en android studio 3.0
  • Cómo "anteponer" un Char a una cadena en Kotlin
  • ¿Hay alguna manera de hacer que scroll de ViewPager DecorView tenga el contenido del fragment?
  • Inicializando matrices en kotlin
  • ¿Cómo puedo decirle a Kotlin que una matriz o colección no puede contener nulos?