Java 如何检查give firebase引用是否不包含任何值或为空

Java 如何检查give firebase引用是否不包含任何值或为空,java,android,firebase-realtime-database,android-progressbar,Java,Android,Firebase Realtime Database,Android Progressbar,如果给定的firebase引用不包含任何输入,我想关闭进度条。 如果给定的引用没有数据,那么进度条将继续加载,如何修复此问题 如果deliveryBoyReference.addChildEventListener(new ChildEventListener(),我想取消进度条。。 函数未被调用 recyclerView=output.findViewById(R.id.list\u of\u all\u delivery\u area\u recyclerView); deliveryBoy

如果给定的firebase引用不包含任何输入,我想关闭进度条。 如果给定的引用没有数据,那么进度条将继续加载,如何修复此问题

如果deliveryBoyReference.addChildEventListener(new ChildEventListener(),我想取消进度条。。 函数未被调用

recyclerView=output.findViewById(R.id.list\u of\u all\u delivery\u area\u recyclerView); deliveryBoyItems=new ArrayList()


不能使用
ChildEventListener
关闭进度条,因为只有在实际存在子项时才会调用
onchildaded
方法。因此,如果要关闭进度条,请添加一个保证触发的额外
ValueEventListener

deliveryBoyReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        pd.dismiss();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.i("fail1","fail");
    }
});

这不会导致额外的带宽被使用,因为Firebase实际上只会在引擎盖下检索两个侦听器的数据一次。

请添加您的数据库结构。如果我推一个孩子,则会调用完整的孩子列表,从而不必要地增加点击次数,并会降低应用程序的效率。但是相反,当我使用ref.addChildEventListener时,这种情况不会发生。我不知道你在说什么。上面的方法是有效的,我知道的许多应用程序都使用了这种方法:使用
ChildEventListener
进行细粒度更新,使用
ValueEventListener
隐藏进度条。我的回答显示了它的额外代码是多么少是,并解释了为什么这不会导致(显著)额外带宽消耗。
deliveryBoyReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        pd.dismiss();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.i("fail1","fail");
    }
});