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