我使用的是FirebaseIndexRecyclerAdapter,它得到一个KEYRF和DATAREF,对于获得所有的DATAARF的孩子非常有用,这些孩子的密钥在KEYRF中作为子代存在。
数据显示正确,但如果我重写onDataChanged以隐藏进度条和/或显示空状态,则取决于itemscant(我已经使用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已加载-实际上我可以在debug中看到键已加载(具有正确的计数),但不幸的是它们是私有的,所以我无法使用它们来获取计数。
我知道我可以覆盖onChildChanged,然后调用getItemCount,得到正确的计数(我已经做了),但仍然不知道是否没有项目,我需要显示空状态。
使用com.firebaseui:firebase-ui:1.2.0
我有什么遗漏吗?
注意-我知道我可以在数据旁边管理自己的计数(子)并在设置适配器之前加载它,但我将此保存为最后一种方法。
谢谢!

最佳答案

因此,按照@frank van puffelen的建议,在firebaseui android github repo中打开一个issue后,我从@supercilex得到了一个答案,说onDataChanged确实在FirebaseIndexRecyclerAdapter中被破坏,将在即将到来的v2.0中修复。

09-27 22:48