Firestore只允许我加载一个文档

时间:2017-10-13 13:46:58

标签: android kotlin google-cloud-firestore

那么,为什么我可以拨打来自this one的任意一对键值,但不能来自this one

这是我的代码

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

如果我切换&#34;城市&#34; for&#34; KitList&#34;并且val country = data["USA"] as String val rope = data["skipping"] as String它有效......请有人向我解释一下吗?

1 个答案:

答案 0 :(得分:0)

第一回答: 在您的火店数据中,我看不到密钥&#34; USA&#34;的数据。和#34;跳过&#34;。您确定这些数据是否正确?

回答第二个问题。 我建议你用你想要的字段创建数据类。然后,您可以使用代码将文档数据映射到您的班级:

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

或者,如果QuerySnapshot中有多个文档:

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

根据您的代码,您可以这样做:

class City(var cityId: String,
       var state: String,
       var name: String,
       var country: String) {

    //remember to add empty constructor.
    constructor() : this("", "", "", "")
}

@ EDIT1 这是你的数据模型:

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

点击此项目的列表时,创建包含所有这些数据的Intent,然后开始新的活动。

@ EDIT2 如果要添加具有特定ID的文档:

{{1}}

如果您想将id传递给之前的活动,请了解有关startActivityForResult方法的内容:)