#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
Как ограничить количество дочерних элементов, добавляемых в 02 из firebase или Java-кода в Android. Я собираюсь добавить дочерний элемент из приложения для Android, которое я создал. И я хочу отправить сообщение пользователю, если количество дочерних элементов 02 уже равно 100. Я пытался
DatabaseReference dref=FirebaseDatabase.getInstance().getReference()
.child("Root").child("Time").child(2019).child(April).child(02);
dref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
numberofpatients=dataSnapshot.getChildrenCount();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
не работает;
также пробовал
dref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
numberofpatients=dataSnapshot.getChildrenCount();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
numberofpatients=dataSnapshot.getChildrenCount();
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
numberofpatients=dataSnapshot.getChildrenCount();
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
numberofpatients=dataSnapshot.getChildrenCount();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
после получения количества я использую следующее, чтобы проверить условие
if(numberofpatients>=3){
android.support.v7.app.AlertDialog.Builder alert=
new android.support.v7.app.AlertDialog.Builder(
FillForm.this);
alert.setTitle("List Full");
alert.setMessage("Select another date!");
alert.setCancelable(false);
alert.setPositiveButton("Okay",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mDateSpinner.requestFocus();
}
});
alert.show();
}
Пожалуйста, помогите, нужна только идея.
Комментарии:
1. Я понял. моя проблема заключалась в проверке условия вне
onDataChange
метода
Ответ №1:
Вы должны выполнить цикл и получить количество дочерних элементов в child («02»)
пример
FirebaseDatabase.getInstance().getReference().child("Time/2019/April/02").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getChildrenCount()==100){
//code here
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});