У меня есть приложение для Android, использующее Google Firebase.
Мне нужно загрузить изображение со случайным идентификатором.
У меня есть функция, которая должна возвращать битовую карту случайного изображения.В этой функции я считываю количество изображений из отдельной записи в базе данных, а затем генерирую случайный идентификатор в диапазоне от 1 до количества изображений.Вот код:
Random rand = new Random();
DatabaseReference amountRef = dbref.child("amount");
amountRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
amount = dataSnapshot.getValue(Long.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
long random = rand.nextLong() % amount + 1;
Функция позже загружает изображение, создает и возвращает растровое изображение.Проблема заключается в том, что код прослушивателя выполняется параллельно с другим кодом, а строка
long random = rand.nextLong() % amount + 1;
вызывает ошибку деления на ноль, поскольку переменная количества еще не обновлена.Я также не могу поместить весь код в OnDataChange, потому что мне нужно вернуть растровое изображение.Пожалуйста, скажите мне, как немедленно получить данные или вернуть растровое изображение из слушателя.