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

时间:2017-05-20 22:11:26

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

我使用FirebaseIndexRecyclerAdapter来获取keyRef和dataRef,并且非常有助于让所有dataRef的子项在keyRef中作为子项存在。

数据正在正确显示但如果我覆盖onDataChanged隐藏进度条和/或显示空状态取决于itemsCount(我已用{做过的事情} {1}}并按预期工作)但FirebaseRecyclerAdapter始终返回0(!)

getItemCount

我已对其进行调查,原因是private class MYAdapter extends FirebaseIndexRecyclerAdapter<Item, ItemHolder> { . . @Override protected void onDataChanged() { super.onDataChanged(); // getItemCount() == 0 here always } . . } 正在使用FirebaseIndexRecyclerAdapter覆盖FirebaseIndexArray并返回getItemCount但数据尚未加载 - mDataSnapshots.size()被调用是因为keyRef已加载 - 实际上我可以在调试中看到密钥被加载(具有正确的计数)但不幸的是它们是私有的,因此我不能使用它们来获取计数。

我知道我可以覆盖onDataChanged,然后拨打onChildChanged并获取正确的计数(我已经完成),但我仍然无法知道是否没有项目我需要显示空状态。

使用getItemCount

我有什么遗失的东西吗?

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

谢谢!

1 个答案:

答案 0 :(得分:3)

所以,按照@Frank van Puffelen的建议,在FirebaseUI-Android github repo中打开issue之后,我得到了@SUPERCILEX的答案,说onDataChanged确实在{{1}中被打破了并将在v2.0中修复,即将推出。