как проверить, не содержит ли дано ссылку на firebase значение или оно пустое - PullRequest
0 голосов
/ 31 января 2019

Я хочу отклонить индикатор выполнения, если заданная ссылка на базу данных не содержит никаких входных данных.если данная ссылка не имеет данных, индикатор загрузки продолжает загружаться, как это исправить.

Я хочу отклонить индикатор выполнения, если функция 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");
        }
    });

1 Ответ

0 голосов
/ 01 февраля 2019

Вы не можете отклонить индикатор выполнения с 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 будет фактически извлекать только изнутри.данные для обоих слушателей один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...