хотите получить значение этих слотов из firebase, сохранить его в проверке String n, если значение «забронировано», затем отключить кнопку, показывающую сообщение - PullRequest
0 голосов
/ 25 февраля 2019

Пример экрана базы данных Firebase:

enter image description here

Я хочу получить значение всех этих слотов (slot1, .., slot4) из firebase исохраните его в строке и проверьте, если значение «забронировано», затем отключите кнопку, показывающую тост-сообщение!Я не знаю, какую ошибку я делаю, может кто-нибудь, пожалуйста, помогите мне исправить это

mdatabaseReference= FirebaseDatabase.getInstance().getReference("CheckAvailability");
    mdatabaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            checkStatus(dataSnapshot);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    })

}

private void checkStatus(DataSnapshot dataSnapshot) {

    String s1,s2,s3,s4;

    for(DataSnapshot ds:dataSnapshot.getChildren()){
        Fdata fdata=new Fdata();
        fdata.setSlot1(ds.child("CheckAvailability").getValue(Fdata.class).getSlot1());
        fdata.setSlot2(ds.child("CheckAvailability").getValue(Fdata.class).getSlot2());
        fdata.setSlot3(ds.child("CheckAvailability").getValue(Fdata.class).getSlot3());
        fdata.setSlot4(ds.child("CheckAvailability").getValue(Fdata.class).getSlot4());

        s1=fdata.getSlot1();
        s2=fdata.getSlot2();
        s3=fdata.getSlot3();
        s4=fdata.getSlot4();

        if(s1.equals("booked")){
            mButtonS1.setEnabled(false);
            Toast.makeText(this,"Slot 1 Already booked",Toast.LENGTH_LONG).show();
        }
        if(s2.equals("booked")){
            mButtonS1.setEnabled(false);
            Toast.makeText(this,"Slot 2 Already booked",Toast.LENGTH_LONG).show();
        }
        if(s3.equals("booked")){
            mButtonS1.setEnabled(false);
            Toast.makeText(this,"Slot 3 Already booked",Toast.LENGTH_LONG).show();
        }
        if(s4.equals("booked")){
            mButtonS1.setEnabled(false);
            Toast.makeText(this,"Slot 4 Already booked",Toast.LENGTH_LONG).show();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 04 марта 2019
String s1=dataSnapshot.child("CheckAvailability").child("Slot1").getValue(String.class);               

Я попытался сделать это, и это сработало для меня !!

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

Хорошо, я знал, где ваша проблема с кодом
в этой строке fdata.setSlot1(ds.child("CheckAvailability").getValue(Fdata.class).getSlot1());
есть две ошибки:

  • вы ссылаетесь на ребенка "CheckAvailability", пока выдолжен ссылаться на дочерний элемент внутри него как «Slot1», потому что вы ссылаетесь на «CheckAvailability» ранее в mdatabaseReference.

  • вы используете getValue () метод с неправильнымТип данных (Fdata.class), вместо этого следует использовать (String.class).

Решение:

mdatabaseReference= FirebaseDatabase.getInstance().getReference("CheckAvailability");
mdatabaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String s1,s2,s3,s4;

            s1 = dataSnapshot.child("Slot1").getValue(String.class);
            s2 = dataSnapshot.child("Slot2").getValue(String.class);
            s3 = dataSnapshot.child("Slot3").getValue(String.class);
            s4 = dataSnapshot.child("Slot4").getValue(String.class);

            if(s1.equals("booked")){
                mButtonS1.setEnabled(false);
                Toast.makeText(this,"Slot 1 Already booked",Toast.LENGTH_LONG).show();
            }
            if(s2.equals("booked")){
                mButtonS1.setEnabled(false);
                Toast.makeText(this,"Slot 2 Already booked",Toast.LENGTH_LONG).show();
            }
            if(s3.equals("booked")){
                mButtonS1.setEnabled(false);
                Toast.makeText(this,"Slot 3 Already booked",Toast.LENGTH_LONG).show();
            }
            if(s4.equals("booked")){
                mButtonS1.setEnabled(false);
                Toast.makeText(this,"Slot 4 Already booked",Toast.LENGTH_LONG).show();

        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
})

Надеюсь, это поможет вам!

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