首页 > 解决方案 > 如何根据数据库在特定日期更新按钮(房间)?

问题描述

在此处输入图像描述

在此处输入图像描述

我使用curentdate (1-25) asparent idroom (08-00_11-00_karpet1-) as创建数据库child idchild id此数据库中包含在该日期 ( )订购该房间 ( ) 的用户信息parent id

问题 1

使用这种布局设计,我如何禁用已订购的按钮以指示该房间不再可用。

(例如,用户在1-28订购karpet 14-17,当用户创建订单数据库时,将根据日期( parentid ) >> room ( childid ) >> userinformation (email.name.phone.etc) 更新数据库)datajadwal

问题2

每个日期有5个房间。当点击特定日期时,房间按钮将根据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) {

            }
        });
    }

这是我所在的位置,但在空对象引用上出错

标签: javaandroidfirebasefirebase-realtime-database

解决方案


如果我正确理解您的问题,您将需要下方的所有数据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();
    }
}

推荐阅读