У меня есть RecyclerView, который использует GridLayoutManager, и каждая ячейка состоит из одного ImageView. Данные, которые я хочу использовать для его заполнения, хранятся в моем хранилище Firestore в виде изображений .png и .jpeg, и каждому из них присваивается имя icon#.png
или icon#.jpeg
, где # — позиция соответствующей ячейки. Моя проблема заключается в том, что когда я пытаюсь загрузить каждое изображение в соответствующую ячейку imageView так, как вы видите ниже, я получаю сообщение об ошибке, потому что я не могу получить каждое изображение из-за того, что некоторые имеют расширение .png, а другие имеют расширение . jpeg один. Насколько я понимаю, мне нужно передать расширение файла в метод storageReference.child()
, прежде чем я смогу загрузить любое изображение из Firestore, верно? Итак, как я могу достичь своей цели здесь?
OnBindViewHolder() :
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
storageReference.child("Icons/icon"+position+".png").getDownloadUrl()
.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
GlideApp.with(mContext).load(uri).into(holder.iconImgView);
Log.d("Adapter", "Image loaded successfully");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("Adapter", "ERROR DOWNLOADING IMAGE");
}
});
}
1 ответ
Не самый умный, но более простой метод — в методе onFailure
для извлечения *.png запустить тот же выбор для *.jpeg. И только после этого обрабатывать ошибку.
Это на тот случай, если у вас нет метода "exist(name)" в Firestore (просто я с ним не знаком)
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.