Я создаю небольшое приложение, которое управляет датами в Android Studio.Для этого я создал следующую базу данных в Firebase:
![enter image description here](https://i.stack.imgur.com/ElFm4.jpg)
Все даты в формате YYYYMMDD
.Я хочу получить первый и последний дочерние ключи узла config
(то есть 20190101
и, скажем, 20211231
).
Я использовал две функции обратного вызова из абстрактного класса Callback
для каждого издаты.
Мой код:
public class Validator{
public static void getMinMaxDatesFromDB(final Callback callback)
{
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("config");
// Get First Date from Firebase
ref.limitToFirst(1).addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
for(DataSnapshot snapshot : dataSnapshot.getChildren())
{
callback.minDate(snapshot.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
throw databaseError.toException();
}
});
// Get Last Date from Firebase
ref.limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
for(DataSnapshot snapshot : dataSnapshot.getChildren())
{
callback.maxDate(snapshot.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
throw databaseError.toException();
}
});
}
}
И абонент:
// Date format - YYYYMMDD (String)
Validator.getMinMaxDatesFromDB(new Callback() {
@Override
void minDate(String minDate) {
super.minDate(minDate);
int year = Integer.parseInt(minDate.substring(0,3));
int month = Integer.parseInt(minDate.substring(4,5));
int day = Integer.parseInt(minDate.substring(6,7));
//some more logic
}
@Override
void maxDate(String maxDate) {
super.maxDate(maxDate);
int year = Integer.parseInt(maxDate.substring(0,3));
int month = Integer.parseInt(maxDate.substring(4,5));
int day = Integer.parseInt(maxDate.substring(6,7));
// some more logic
}
});
Но я получаю "config"
в minDate
вместо "20190101"
.
Буду признателен за помощь.
PS Кроме того, я также хотел бы знать, есть ли лучший способ получения первого и последнего дочернего элемента определенного узла без использованияциклов или обратные вызовы - единственный вариант?