如何将对象从Firestore转换为数组列表?

时间:2019-10-13 14:13:36

标签: java android google-cloud-firestore

创建用户时,我会获得一个列表,其中包含该用户所需图像的Urls。

喜欢

 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 个答案:

答案 0 :(得分:1)

首先,您将DocumentSnapshot转换为User类的实例。您将必须在User类中初始化getter。然后,您可以使用getter获取网址列表。 因此,您的代码将如下所示:

  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();
                                    }

                                }
                             });