【问题标题】:FirebaseIndexRecyclerAdapter onDataChanged is called but getItemCount() always return 0FirebaseIndexRecyclerAdapter onDataChanged 被调用,但 getItemCount() 总是返回 0
【发布时间】:2017-10-20 20:06:27
【问题描述】:

我正在使用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(),但尚未加载数据-onDataChanged 被调用是因为keyRef 已加载- 实际上我可以在调试中看到密钥已加载(具有正确的计数)但不幸的是它们是私有的,所以我不能使用它们来获取计数。

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

使用com.firebaseui:firebase-ui:1.2.0

我有什么遗漏吗?

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

谢谢!

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2014-03-20
    相关资源
    最近更新 更多