# #java #android #firebase #google-cloud-firestore
Вопрос:
Я сохранил изображения в Firestore в виде списка массивов типа String, который имеет свой URL-адрес. Я хочу, чтобы эти изображения, хранящиеся в поле «изображения», были помещены в слайдер изображений с моделью слайдов, которая принимает ArrayList в качестве параметра.
Класс SlideModel имеет следующие переменные:
private String imageUrl;
private Integer imagePath;
private ScaleTypes scaleTypes;
private String title;
Код, вставленный ниже, повторяет документы, а не поля конкретного документа
db.collection("userimages").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (QueryDocumentSnapshot document : task.getResult())
sliderDataArrayList.add(new SlideModel(document.getData().toString(), ScaleTypes.FIT));
imageSlider.setImageList(sliderDataArrayList,ScaleTypes.FIT);
}
}
Ползунок изображения принимает ArrayList в качестве параметра и типа масштаба.
Этот код в слайдере изображений вводит документы в слайдер, а не в поле того документа, который содержит изображения.Изображение структуры данных в firestore
Я хочу получить «поле»: «изображения», в котором есть список строк, содержащих URL-адреса изображений, а затем сохранить его в списке sliderDataArrayList .
final List<SlideModel> sliderDataArrayList = new ArrayList<>();
ПОЖАЛУЙСТА, ПРЕДЛОЖИТЕ МНЕ ЛУЧШИЙ СПОСОБ ОБОЙТИ ЭТО ИЛИ ОТВЕТ НА ЭТУ ПРОБЛЕМУ
Спасибо!
Комментарии:
1. Итак, вам нужно получить все URL-адреса из всех документов?
2. я хочу получить все URL-адреса из одного документа в imageslider ..есть ли другой способ отображения нескольких изображений, если вы можете предоставить статью или документацию или источник, из которого я могу это реализовать. я предоставил изображение из firestore, как хранятся изображения
3. Вы говорите «из одного документа», из какого именно? Тот, который существует в
root -> userimages -> NhVq ... SMSr
? Сохранили идентификатор документа в переменной?4. Да, из этого документа»NhVq…. SMSr» и нет, я не сохранил идентификатор документа в переменной
5. Вы не против, если я дам вам ответ, используя кодированный идентификатор документа?
Ответ №1:
Согласно вашему комментарию, поскольку в ответе на получение данных в userimages
массиве, который существует в NhVqAzmI6Cu9q8BTSMSr
документе, вы говорите, что это «будет действительно полезно», тогда вы здесь.
Поскольку я не вижу ни одного класса , который содержит a List<String>
, я создам его для вас:
class DocumentClass {
public List<String> images;
}
Теперь, чтобы получить нужный массив, нам нужно создать ссылку, которая указывает на NhVqAzmI6Cu9q8BTSMSr
документ:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference userImagesRef = rootRef.collection("userimages");
DocumentReference docRef = userImagesRef.document("NhVqAzmI6Cu9q8BTSMSr");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
DocumentClass documentClass = document.toObject(DocumentClass.class);
List<String> images = documentClass.images;
imageSlider.setImageList(images, ScaleTypes.FIT);
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
Для получения дополнительной информации, пожалуйста, ознакомьтесь со следующей статьей:
Комментарии:
1. Этот ответ, кажется, работает, но выдает ошибку » Не удается преобразовать объект типа java.lang. Строка для ввода com.denzcoskun.imageslider.models. Слайд-модель ‘
2. Скорее всего , вы определили список как тип
SlideModel
, что неверно. Вы должны определить его как строку, как в моем ответе выше. Попробуйте изменить это и скажите мне, работает ли это.3. если я изменю его на List<String>, imageslider.setimageList примет в качестве параметра только List<String><SlideModel>, а файл ImageSlider и SlideModel будут файлом, доступным только для чтения, с зависимостью «реализация» com.github.denzcoskun:ImageSlideshow:0.1.0″»
4. ваш ответ мог бы сработать, если бы существовал способ редактирования этих файлов только для чтения или альтернативный, который, я думаю, заключается в создании другого класса/адаптера imageslider, который будет принимать List<String> в качестве параметра . Также спасибо за большую помощь, я поддержу это, так как ответ правильный, но не могу его применить
5. если вы все еще думаете, что это может сработать, дайте мне знать или какой-нибудь источник с помощью ImageSlider с firestore