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 🙂

  • Incorrecto "esto" se usa en cierres nesteds
  • Método de presentador de Fragmentos de llamada de Actividad
  • Kotlin no puede acceder a kotlin.jvm.functions.Function1 cuando llama a la function kotlin con java lambda
  • Kotlin gradle.build ZipException debido a duplicates
  • ¿Puede Kotlin permitir una function que devuelva un valor del tipo de implementación de esta interfaz?
  • Corutinas paralelas de Kotlin
  • Referencia no resuelta a la function en Kotlin Android
  • Procesamiento de annotations de Kotlin: ¿es posible generar un método de extensión?
  • @StringRes, @DrawableRes, @LayoutRes y demás annotations de android lint check con los parameters de kotlin
  • ¿Cómo convierto un Char a Int?
  • Divida el marco de google-vision en dos