java - Firestore 分页适配器 - 如何知道查询是否返回 0 个结果

标签 java android firebase pagination google-cloud-firestore

我正在使用 Firestore 分页适配器使用 Firestore 中的数据填充我的 RecyclerView,如果 Firestore 中的集合为空,我想显示一个 TextView 来通知用户如果不是,那么我想用数据填充 EecyclerView 但我没有找到使用 Firestore 分页适配器执行此操作的方法,因为我无法从我所在的 fragment 内部访问数据创建适配器 我的 Fragment 位于 onViewCreated

val config = PagedList.Config.Builder()
                .setEnablePlaceholders(false)
                .setPrefetchDistance(2)
                .setPageSize(5)
                .build()
        val options = FirestorePagingOptions.Builder<Question>()
                .setLifecycleOwner(viewLifecycleOwner)
                .setQuery(FirestoreUtil.myFeedQuery, config, Question::class.java)
                .build()
        mAdapter = WallFeedRVAdapter(this, options)

WallFeedRVAdapter 是 RecyclerView 适配器,我用加载的数据填充 MyViewHolder 。我如何从托管 RecyclerView 的当前 fragment 知道 myFeedQuery 是否返回任何结果,以便我可以将 recyclerView 可见性更新为 GONE,将emptyInfoTextView 更新为 VISIBLE。

最佳答案

要获取传递给 FirestorePagingOptions 对象的查询返回的项目数,您需要使用适配器中存在的 getItemCount() 方法类(class)。由于 Cloud Firestore 中的数据是异步加载的,因此您不能直接在适配器类中直接调用 getItemCount(),因为它始终。因此,为了获取项目总数,您需要注册一个观察者,如以下代码行所示:

mAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
    public void onItemRangeInserted(int positionStart, int itemCount) {
        int totalNumberOfItems = adapter.getItemCount();
        Log.d(TAG, String.valueOf(totalNumberOfItems));
        if(totalNumberOfItems == 0) {
            recyclerView.setVisibility(View.GONE);
            emptyInfoTextView.setVisibility(View.VISIBLE);
        }
    }
});

关于java - Firestore 分页适配器 - 如何知道查询是否返回 0 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58651842/

相关文章:

java - Hibernate 验证 - 使用 @GroupSequence 对嵌套类进行分组

android - 需要帮助将进程从 Java(android) 转换为 IOS Swift

firebase - Firebase Cloud Firestore : fetching documents over collections 的成本优化模式

java - 将 JavaHelp 与 Web 应用程序结合使用

java - maven Surefire 插件 - 按顺序运行所有测试

java - 我的整个 Android 应用程序只有一个线程池

android - 如何将 Tensorflow 与 react-native 一起使用?

firebase - 是否可以回滚到实时数据库规则的先前版本

firebase - 如何对用express包装的firebase函数进行单元测试?

java - 从一字节文件读取返回 0xEF 0xBF 0xBD