当前位置: 首页 > 知识库问答 >
问题:

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

夔建章
2023-03-14

我正在使用firestore分页适配器用firestore中的数据填充我的RecyclerView,如果firestore中的collection是空的,我希望显示TextView来通知用户,如果不是空的,我希望用数据填充eecyclerView,但我没有找到使用firestore分页适配器的方法,因为我不能从我在onviewCreated中创建适配器的片段中访问数据,因为我在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是RecyerView适配器,我在这里用加载的数据填充MyViewHolder。如何从承载RecycerView的当前片段中了解myFeedQuery是否返回任何结果,以便将RecycerView visibility更新为GONE,并将emptyInfoTextView更新为Visible。

共有1个答案

公孙霖
2023-03-14

要获得传递给FireStorePagingOptions对象的查询返回的项数,需要使用适配器类中存在的GetItemCount()方法。因为来自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);
        }
    }
});
 类似资料:
  • 问题内容: 我正在使用Firestore 分页适配器从Firestore中填充数据,如果Firestore中的集合为空,我想向用户显示一个通知,如果不是,那么我想填充数据,但是我不填充看到使用Firestore分页适配器执行此操作的方法,因为我无法从创建适配器的片段内部访问数据 WallFeedRVAdapter是我在其中填充已加载数据的适配器。我如何从托管的当前片段中了解myFeedQuery是

  • 我正在将我的PHP代码从mysql更新到mysqli,但我似乎找不到这个问题的答案:mysqli更新查询是否返回结果? 使用mysql,我可以 即使该查询不返回任何行,也将为true。 现在,在mysqli代码中,我有如下内容(为了清晰起见,删除了错误处理): 结果是错误的。 对于记录来说,查询是有效的(忽略我可能在将其转录到stackoverflow中时犯的任何错别字),字段1在数据库中按预期正

  • 问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用

  • 我在集合中有大约30条记录,其中几乎25条包含单词。现在,当我尝试使用时,它不会返回任何东西。 下面是我的查询代码: 下面是我的Firestore截图:

  • 问题内容: 我在此链接中看到了一些代码,并感到困惑:http : //www.darkcoding.net/software/go-lang-after-four- months/ 第二个值(确定)是什么意思? 问题答案: 接收操作符返回的布尔变量指示接收的值是在通道上发送的(true)还是由于通道关闭且为空而返回的零值(false)。 当Go程序的其他部分关闭或通道时,循环终止。在这种情况下,其

  • [root@externalsystem~]#curl-xpost-h'请求:{“request”:“prepareandexecute”,“connectionid”:“000000-0000-0000-00000000”,“stateMentID”:12345,“sql”:“select*FROM questtweets1”,“maxrowcount”:1}'http://here.comes