android - FirebaseIndexRecyclerAdapter onDataChanged 被调用但 getItemCount() 始终返回 0

标签 android firebase-realtime-database android-recyclerview firebaseui

我正在使用FirebaseIndexRecyclerAdapter它获取 keyRef 和 dataRef,对于获取所有 dataRef 的子项(其键作为子项存在于 keyRef 中)非常有帮助。

数据显示正确,但如果我覆盖 onDataChanged 来隐藏进度条和/或显示空状态取决于 itemsCount (我已经用 完成了>FirebaseRecyclerAdapter 并按预期工作),但 getItemCount 始终返回 0(!)

private class MYAdapter extends FirebaseIndexRecyclerAdapter<Item, ItemHolder> {
    .
    .

    @Override
    protected void onDataChanged() {
        super.onDataChanged();
        // getItemCount() == 0 here always
    }

    .
    .
}

我已经调查过了,原因是 FirebaseIndexRecyclerAdapter 正在使用 FirebaseIndexArray ,它覆盖 getItemCount 并返回 mDataSnapshots.size () 但数据尚未加载 - 由于 keyRef 已加载而调用了 onDataChanged - 事实上我可以在调试中看到 key 已加载(具有正确的计数),但不幸的是它们是私有(private)的,因此我无法使用它们来获取计数。

我知道我可以重写onChildChanged,然后调用getItemCount并获取正确的计数(我已经完成了),但我仍然不知道是否有项目,我需要显示空状态。

使用com.firebaseui:firebase-ui:1.2.0

我有什么遗漏的吗?

注意 - 我知道我可以在数据旁边管理自己的计数(子项),并在设置适配器之前加载它,但我将其保存为最后的手段。

谢谢!

最佳答案

所以,打开 issue 后在 FirebaseUI-Android github 存储库中,按照 @Frank van Puffelen 的建议,我从 @SUPERCILEX 得到了答案,说 onDataChanged 确实在 FirebaseIndexRecyclerAdapter 中损坏,并将在v2.0 即将推出。

关于android - FirebaseIndexRecyclerAdapter onDataChanged 被调用但 getItemCount() 始终返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091290/

相关文章:

android - 只读模式下的 ext4 文件系统对移动设备的性能是否优于 ext2?

android - 如何在 kotlin 中使用 gson 解析改造 json 主体

Android如何检测用户看起来屏幕

ios - 如何在不同 View 之间共享从 firebase 存储下载的图像?

android - Vertical Recyclerview 只允许向下滚动但阻止向上滚动

android - 使用 Android 的 RecyclerView 时在滑动行下添加带有文本/图标的彩色背景

android - 从 fragment 调用 sharedPref 时上下文出现 NullPointerException 错误

ios - UITextField 数据未上传到 firebase

ios - 未连接时如何在带有回调的Firebase中使用observeSingleEvent?

android - RecyclerView 添加 EmptyView