如果给定的Firebase参考不包含任何输入,我想关闭进度栏。 如果给定的参考没有数据,则进度条将继续加载,如何解决此问题。
如果deliveryBoyReference.addChildEventListener(new ChildEventListener()..我想关闭进度栏。 函数未调用
recyclerView = output.findViewById(R.id.list_of_all_delivery_area_recyclerview); deliveryBoyItems = new ArrayList <>();
final ProgressDialog pd = new ProgressDialog(getContext());
pd.setMessage("loading");
pd.setCanceledOnTouchOutside(false);
pd.show();
firebaseStorage=FirebaseDatabaseReference.getStorageINSTANCE();
storageReference=firebaseStorage.getReference("DeliveryBoyImage/");
firebaseDatabase = FirebaseDatabaseReference.getDatabaseInstance();
deliveryBoyReference = firebaseDatabase.getReference("DELIVERYBOY");
deliveryBoyReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
DeliveryBoyReference deliveryBoyReference = dataSnapshot.getValue(DeliveryBoyReference.class);
deliveryBoyItems.add(deliveryBoyReference);
adapter.notifyDataSetChanged();
pd.dismiss();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Log.i("fail","fail");
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
Log.i("fail","fail");
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i("fail1","fail");
}
});
答案 0 :(得分:0)
您无法使用ChildEventListener
来关闭进度条,因为onChildAdded
方法仅在孩子实际存在时才被调用。因此,如果您要关闭进度条,请添加一个可以触发的ValueEventListener
:
deliveryBoyReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
pd.dismiss();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i("fail1","fail");
}
});
这不会导致使用额外的带宽,因为Firebase实际上将在幕后只为两个侦听器检索一次数据。