Как преобразовать объект из Firestore в список массивов? - PullRequest
1 голос
/ 13 октября 2019

Когда я создаю пользователя, у меня есть Список с URL-адресами изображений, которые нужны этому пользователю.

Как

 final List<String> picturesUrls = pictureUrl; 

Мой объект пользователя -




import java.util.List;

public class User {


    public List<String> picturesUrls;


    public User() {

    }

    public User(List<String> picturesUrls) {

        this.picturesUrls = picturesUrls;


    }

}

Все работает нормально, но когда я хочу получить эти данные из FireStore

  db.collection("Users").whereEqualTo("email",user.getEmail())
                             .get()
                             .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                                 @Override
                                 public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                     if(task.isSuccessful()){
                                         for(QueryDocumentSnapshot document: task.getResult()){
                                            Object obj = document.get("picturesUrls");
                                             actualUser = new User(              
                                                     picturesUrls
                                             );
                                         }
                                     }
                                 }
                             });

, но в модели User, picturesUrls - это тип List, а то, что дает мне из FireStore, - это объект. На данный момент в этом списке это только 1 строка. Как я могу преобразовать этот объект в список для создания нового объекта пользователя, а затем зациклить в этом списке, чтобы получить последнее значение («фактическое изображение профиля»)

Заранее спасибо!

1 Ответ

2 голосов
/ 13 октября 2019

Сначала вы конвертируете DocumentSnapshot в экземпляр класса User. Вы должны были бы инициализировать геттер в User классе. Затем вы можете использовать getter для получения списка URL. Таким образом, ваш код будет выглядеть так:

  db.collection("Users").whereEqualTo("email",user.getEmail())
                             .get()
                             .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                                 @Override
                                 public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                                    for(DocumentSnapshot ds : queryDocumentSnapshots)   {
                                        User user = ds.toObject(User.class);
                                        List<String> urlList = user.getPicturesUrls();
                                    }

                                }
                             });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...