从 Firebase Firestore 检索上次插入的集合名称 |单击“添加客户端”按钮后,在 TextView 中显示上次插入的集合名称

问题描述 投票:0回答:1

在我的 Android 应用程序中,我有一个 MainActivity 作为主要基础,其中有一个标有“添加客户端详细信息”的按钮。单击此按钮后,用户应导航到名为 AddViewClientDetailsActivity 的新活动。我专注于优化应用程序的大小和可用性,因此我决定尽可能使用片段而不是活动。

在 AddViewClientDetailsActivity 中,我想在 Fill_One.java 片段中显示 TextView,而不是使用单独的片段。当用户单击“添加客户端详细信息”按钮时,此 TextView 应动态显示从 Firestore 最后插入的集合的名称。 TextView 将用作客户端 ID,我还将在其旁边合并一个图像。

现状: 单击“添加客户端详细信息”按钮后,我已成功实现到 AddViewClientDetailsActivity 的导航。但是,我在使用 Fill_One.java 片段中最后插入的集合名称动态更新 TextView 时面临挑战。

请求帮助: 我需要有关如何使用单击“添加客户端详细信息”按钮时从 Firestore 检索到的最后插入的集合名称来有效更新 Fill_One.java 片段中的 TextView 的指导。此外,如果您能提出将图像与 TextView 一起合并以进行视觉表示的建议,我们将不胜感激。

  • Firebase Firestore 数据库集成
  • 触发检索过程的按钮
  • 在下一个 Activity 的片段中的 TextView 中显示最后插入的集合名称

目前进展: 我已经创建了该按钮并将 Firebase Firestore 集成到我的项目中。但是,我正在努力实现检索最后插入的集合名称的功能。

代码片段(不起作用): `// 我尝试检索最后插入的集合名称的代码片段 私有无效 fetchLastInsertedCollectionName() { FirebaseFirestore db = FirebaseFirestore.getInstance();

db.collection("collection_creation_times")
        .orderBy("creation_time", Query.Direction.DESCENDING)
        .limit(1)
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        String lastCreatedCollectionName = document.getId();
                        // Now I need to set this name in a TextView in the next activity's fragment
                        // How can I achieve this?
                    }
                } else {
                    Toast.makeText(getContext(), "Failed to fetch last inserted collection name", Toast.LENGTH_SHORT).show();
                }
            }
        });

} `

我需要帮助在下一个活动片段的 TextView 中设置检索到的最后插入的集合名称。任何人都可以提供指导或建议实现此功能的最佳方法吗?

我尝试使用查询从 Firebase Firestore 获取最后插入的集合名称。我希望检索最后插入的集合的名称,并将其设置在下一个活动片段内的 TextView 中。然而,我在实现此功能时遇到了困难,并正在寻求帮助以实现预期的结果。

android firebase android-fragments google-cloud-firestore textview
1个回答
0
投票

无法使用移动 SDK 列出文档的顶级集合或子集合。由于此操作不可能,因此您无法知道最后添加的是哪个集合。相反,您可以在实时数据库中添加一个包含集合列表的节点。当您在数据库中写入名称时,还要添加时间戳。要获取最后一个集合名称,请按照以下文章中的描述对元素进行降序排序:

检查您的代码,我可以肯定地告诉您,您想要知道最后添加的文档而不是最后添加的集合。如果是这种情况,那么您应该简单地在回调中设置文档 ID:

db.collection("collection_creation_times")
        .orderBy("creation_time", Query.Direction.DESCENDING)
        .limit(1)
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        String lastCreatedCollectionName = document.getId();
                        TextView tv = findViewById<TextView>(R.id.tv); //👈
                        tv.setText(lastCreatedCollectionName); //👈
                    }
                } else {
                    Toast.makeText(getContext(), "Failed to fetch last inserted collection name", Toast.LENGTH_SHORT).show();
                }
            }
        });

因为您将结果限制为一个,所以您将获得 TExtView 中显示的最后一个文档 ID。

© www.soinside.com 2019 - 2024. All rights reserved.