Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firestore只允许我加载一个文档_Android_Kotlin_Google Cloud Firestore - Fatal编程技术网

Android Firestore只允许我加载一个文档

Android Firestore只允许我加载一个文档,android,kotlin,google-cloud-firestore,Android,Kotlin,Google Cloud Firestore,那么,为什么我可以从中调用任意一对键值,但不能从中调用 这是我的密码 var firstKitList = mutableListOf<String>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_kit_list) val mainKitList = ki

那么,为什么我可以从中调用任意一对键值,但不能从中调用

这是我的密码

 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()
    }
var firstKitList=mutableListOf()
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u kit\u列表)
val main kitlist=kitListView
val mainListViewAdapter=ArrayAdapter(这个,android.R.layout.simple\u list\u item\u 1,firstKitList)
mainKitList.adapter=mainListViewAdapter
db1.collection(“cities”).get().addOnSuccessListener{snapshot->
for(snapshot.documents中的文档){
val数据=document.data
val国家=数据[“美国”]作为字符串
firstKitList.add(国家)
}
mainListViewAdapter.notifyDataSetChanged()
}
如果我将“城市”切换为“KitList”,将
val country=data[“USA”]切换为字符串,将
val rope=data[“skipping”]切换为字符串,它会工作……有人能给我解释一下吗?

第一个答案:
在您的firestore数据中,我没有看到键“USA”和“skipping”的数据。您确定这些数据正确吗

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

document.data.toObject(DataClass::class.java)
或者,如果QuerySnapshot中有多个文档:

val dataList = mutableListOf<DataClass>()
querySnapshot.documents.mapTo(dataList) { it.toObject(DataClass::class.java)}
@编辑1 这是您的数据模型:

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

    //remember to add empty constructor.
    constructor() : this("", "", "", "")
}
当您点击此项目上的列表时,使用所有这些数据创建一个意图,然后开始新的活动

@编辑2 如果要添加具有特定id的文档:

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

如果要将id传递给上一个活动,请了解startActivityForResult方法:)

在firestore数据中,我没有看到键“USA”和“skipping”的数据。你确定这些数据是正确的吗?这个答案让我明白了问题的症结所在。谢谢你能告诉我一件我不知道怎么做的事:与其寻找特定的数据,我如何才能加载整个文档?谢谢下面的答案。关于第一个问题,这是一个愚蠢的错误,已修复。我正在调用值,而不是关键(数据)。至于第二个,也许我解释错了。让我们以收集“城市”为例。我有一个名为“LA”的文档。我怎么能让它在我的列表上显示为“LA”然后我点击它,它显示在该文档中的元素?我知道如何创建意图以及所有这些,只需要从firestore获取部分的帮助谢谢:DPut document id(在本例中为LA)到文档中。然后您将有{“country”:“USA”,“name”:“Los Angeles”,“state”:“CA”,“cityId”:“LA”}。它将使您能够按id查询项目:)到文档中的何处?抱歉,我对Android开发相当陌生。在您的文档中,您有3个字段,对吗?请输入另一个字段,称为cityId,并添加LA或其他您想要的id:)哦,不,不是:)我想要的是文档的名称(在本例中是LA,您可以从我的问题的链接中看到)显示在我的列表中,然后当我单击它时,另一个活动会显示文档中的数据。正如我所说,我知道如何创建意图:)
FirebaseFirestore.getInstance().collection("collectionName")
                    .document("documentId, for example LA").set(city)