【问题标题】:How to get list of object inside collection from cloud firestore in Android?如何从Android中的云Firestore获取集合内的对象列表?
【发布时间】:2020-03-19 08:17:30
【问题描述】:

Here's the data

如何获得“listTask”

我尝试使用以下代码记录“document.data["listTask"]”:

db.collection("project").get()
        .addOnSuccessListener { result ->
            Log.d(TAG, "onRefresh: loadProject")
            for (document in result){
                if (document.data["owner_id"]== id){
                    counter++
                    Log.d(TAG, "inside response: ${document.data["listTask"]}")
                }
            }

        }

这是日志结果

D/YourProjectFragment: inside response: [{id=29356, title=Database, status=false}, {id=28581, title=UI UX, status=false}, {id=66044, title=Architecture Design, status=false}, {id=77830, title=Functional Test, status=false}]

我不知道响应的模式,我尝试过使用JSONArray,但那不是JSONArray

那么如何在 Cloud Firestore 中获取集合中的对象列表?

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

    我试过jsonArray,但那不是jsonArray

    这显然不是JSONArray,它是对象类型的属性。除此之外,JSONArray 不是supported data type

    那么如何在 Cloud Firestore 中获取集合中的对象列表?

    很遗憾,您不能将listTask 属性直接映射到自定义对象列表中。您应该为此编写一些代码。 listTask 属性实际上是一个 HashMap 对象列表,正如您的响应所述:

    response: [{id=29356, title=Database, status=false}, {id=28581, title=UI UX, status=false}, {id=66044, title=Architecture Design, status=false}, {id=77830, title=Functional Test, status=false}]
    

    看,它以[ 开头并以] 结尾,这使它成为一个数组,并且该数组中的每个对象都是一个HashMap。因此,您需要遍历这个 HashMap 对象列表并创建自己的 "Task" 对象列表。

    如果需要,您可以联系 Firebase 团队并提出请求。

    【讨论】:

    • 那么如何迭代它?,我应该如何处理document.data["listTask"] 我如何处理它,我尝试document.data["listTask"] as? Array<HashMap<Any, Any>> 但我认为这不是正确的方法
    • 应该是ArrayList<HashMap<String, Any>>。因此,只要在该列表中您有 HashMap 对象,就可以使用迭代将它们中的每一个取出。
    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    相关资源
    最近更新 更多