创建用户时,我会获得一个列表,其中包含该用户所需图像的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个字符串。 如何将对象转换为列表以创建新的用户对象,然后循环到该列表以获取最后一个值(“实际个人资料图片”)
提前谢谢!
答案 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();
}
}
});