как обновить кнопки (номера) на указанную c дату согласно базе данных? - PullRequest
0 голосов
/ 25 января 2020

enter image description here

enter image description here

Я создаю базу данных, используя curentdate (1-25) как parent id и использование room (08-00_11-00_karpet1-) в качестве child id. внутри этой базы данных находятся пользовательские данные, которые заказывают эту комнату (child id) в эту дату (parent id).

Вопрос 1

с использованием этого макета, каким образом * i отключить кнопку , которая была заказана так, чтобы указывать, что комната больше не доступна.

(пример. заказ пользователя karpet 14-17 on 1- 28 , когда пользователь создает базу данных заказов, обновляет базу данных datajadwal на основе даты ( parentid ) >> комната ( childid * 1041) *) >> userinformation (email.name.phone.et c))

Вопрос 2

каждая дата имеет 5 номеров. при указании c щелчка по дате кнопка помещения будет отключена в соответствии с данными на datajadwal и на эту дату (parentid), если нет данных о комнате (childid), что означает, что помещение доступно.

моя ситуация = я не знаю, горячо, чтобы получить childid

private void datajadwalupdate(){
        databseJadwal = database.getReference("datajadwal").child(haritanggalOrder);
        databseJadwal.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot dateSnapshot: dataSnapshot.getChildren()) {
                    final String rooms = dataSnapshot.getKey();
                    databseJadwal.child(haritanggalOrder).child(rooms).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                        }

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

                        }
                    });
                }
            }

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

            }
        });
    }

это где я, но получил ошибку при нулевой ссылке на объект

Ответы [ 2 ]

0 голосов
/ 25 января 2020

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

DatabaseReference ref = rootRef.child(id).child(date);
ref.addValueEventListener(...

    onDataChange...{
          for (Snapshot child: dataSnapshot.getChildren()) {
                 //set the names as you are doing it
                 boolean occupied = child.hasChild("email)
                 button.setEnabled(!occupied)
           }

    }

Вы должны создать POJO, представляющий вашу сущность, и получить значение из снимок ребенка с getValue(YourPOJO.class)

0 голосов
/ 25 января 2020

Если я правильно понимаю ваш вопрос, вам понадобятся все данные в datajadwal, чтобы отключить правильные кнопки. В этом случае вы можете использовать слушателя так:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("datajadwal");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot dateSnapshot: dataSnapshot.getChildren()) {
            String date = dataSnapshot.getKey();
            for (DataSnapshot bookingSnapshot: dateSnapshot.getChildren()) {
                String booking = bookingSnapshot.getKey();

                // TODO: parse the booking into the time slot and room name
                String timeslot = ...
                String room = ...

                // TODO: find the button for the room name and time slot and disable it

            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...