gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:07:12 24 4
gpt4 key购买 nike

我正在使用 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/57720233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com