Android 计算子项中的值数以检查重复数据

Android 计算子项中的值数以检查重复数据,android,json,firebase,android-studio,firebase-realtime-database,Android,Json,Firebase,Android Studio,Firebase Realtime Database,我想计算此子日期\u时间\u医生\u活动的值,如果计数大于0,则toast无法插入,如果计数为0,则执行插入数据或toast消息的方法 我尝试过很多解决方案,但都没有一个是对的 这是我的json代码 "appointment" : { "-MHp2gC9Wwk_NlbpdJRY" : { "active_appointment" : "true", "active_appointment_pat

我想计算此子日期\u时间\u医生\u活动的值,如果计数大于0,则toast无法插入,如果计数为0,则执行插入数据或toast消息的方法 我尝试过很多解决方案,但都没有一个是对的

这是我的json代码

  "appointment" : {
"-MHp2gC9Wwk_NlbpdJRY" : {
  "active_appointment" : "true",
  "active_appointment_patient_email" : "true_hanamoha075@gmail.com",
  "date_appointment" : "23/Aug/2020",
  "date_time_doctor_active" : "23/Aug/2020_10:15 AM_باسل الخالدي_true",
  "doctor_number" : "باسل الخالدي",
  "id_appointment" : "-MHp2gC9Wwk_NlbpdJRY",
  "patient_email" : "hanamoha075@gmail.com",
  "time_appointment" : "10:15 AM"
},
"-MHp2nWxB4jwx9K5NQGj" : {
  "active_appointment" : "true",
  "active_appointment_patient_email" : "true_hanamoha075@gmail.com",
  "date_appointment" : "23/Aug/2020",
  "date_time_doctor_active" : "23/Aug/2020_10:15 AM_باسل الخالدي_true",
  "doctor_number" : "باسل الخالدي",
  "id_appointment" : "-MHp2nWxB4jwx9K5NQGj",
  "patient_email" : "hanamoha075@gmail.com",
  "time_appointment" : "10:15 AM"
},
"-MHp2rOv3xiY_ylkIdyf" : {
  "active_appointment" : "true",
  "active_appointment_patient_email" : "true_hanamoha075@gmail.com",
  "date_appointment" : "23/Aug/2020",
  "date_time_doctor_active" : "23/Aug/2020_10:15 AM_باسل الخالدي_true",
  "doctor_number" : "باسل الخالدي",
  "id_appointment" : "-MHp2rOv3xiY_ylkIdyf",
  "patient_email" : "hanamoha075@gmail.com",
  "time_appointment" : "10:15 AM"
}
这是我的按钮点击监听器中的java代码

     submitButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String patienttDate = txt_date.getText().toString().trim();
            final String patienttTime = txt_time.getText().toString().trim();
            final String patienttDoctor = choose_doctor.getSelectedItem().toString().trim();
            final String patienttActive = "true";
            appointment_DataBase.child("appointment")
                    .orderByChild("date_time_doctor_active")
                    .equalTo(patienttDate + "_" + patienttTime + "_" + patienttDoctor + "_" + patienttActive)
                    .addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            if (snapshot.exists()) {
                                for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                                    Appointment appointment = dataSnapshot.getValue(Appointment.class);
                                    appointment.getDate_time_doctor_active();
                                    size = size + 1;
                                }
                            } else {
                                if (size > 0) {
                                    Toast.makeText(booking.this, "cant inserrrrt", Toast.LENGTH_SHORT).show();
                                    Toast.makeText(booking.this, "size is " + size, Toast.LENGTH_SHORT).show();
                                } else {
                                    addAppointment();
                                }
                            }
                        }

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

                        }
                    });
        }
    });

我已经弄明白了。。我对代码做了一些更改,这就是结果

     Query query = FirebaseDatabase.getInstance().getReference("appointment")
                    .orderByChild("date_time_doctor_active")
                    .equalTo(patienttDate+"_"+patienttTime+"_"+patienttDoctor+"_"+patienttActive);

            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    size = 0;
                    for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                        Appointment appointment = dataSnapshot.getValue(Appointment.class);
                         appointment.getDate_time_doctor_active();
                         if (dataSnapshot.exists()){
                             size = size +1;
                         }
                    }
                    if (size > 0){
                        Toast.makeText(booking.this, "this appointment is not available" , Toast.LENGTH_LONG).show();
                    }else {
                        addAppointment();
                    }
                }

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

                }
            });

什么是
预约\u数据库
?我的数据库reference@Omid.n我想计算这个孩子日期\u时间\u医生\u活动的数值是什么意思
date\u time\u doctor\u active
不是一个数字,因此可以计算。感谢您的重播。。我只是想办法。。date\u time\u doctor\u active是子名称,需要查询4个字段才能检查预约是否存在