如何从文档中检索嵌套对象并将其显示在 FirestoreRecyclerOptions 中?

How to retrieve nested object from a document and display it in FirestoreRecyclerOptions?

我在 Firestore 中有这个数据结构,如图所示。

我正在使用 FirestoreRecyclerOptions 来显示用户的地址。我将地址存储为 POJO (UserAddressModel.java),我不知道以这种方式存储它是否是最佳做法,但我是这样做的。

UserInformationsModel.java

   public class UserInformationsModel {

private String email, username, name ;
private UserAddressModel userAddress;   
private String phoneNumber;
private String photo;
private String photoUrl;



public UserInformationsModel() {
}
}

UserAddressModel.java

 public class UserAddressModel {

private String fullName, streetAddressOne, streetAddressTwo, city, state, country;
private String zipCode;

public UserAddressModel() {
}



public UserAddressModel(  String streetAddressOne, String city, String state, String country, String zipCode) {

    this.streetAddressOne = streetAddressOne;
    this.city = city;
    this.state = state;
    this.country = country;
    this.zipCode = zipCode;
}
public String getFullName() {
    return fullName;
}

public String getStreetAddressOne() {
    return streetAddressOne;
}

public String getStreetAddressTwo() {
    return streetAddressTwo;
}

public String getCity() {
    return city;
}

public String getState() {
    return state;
}

public String getCountry() {
    return country;
}

public String getZipCode() {
    return zipCode;
}

我已经创建了扩展 FirestoreRecyclerAdapter 及其布局的 AdapterAddress class。

我的问题是如何在我的 recyclerview 中显示地址 1 和地址 2? 因为我注意到 setQuery 方法需要查询,但我不知道如何获取地址

Query query = coll_ref.orderBy("?????");

  FirestoreRecyclerOptions<UserAddressModel> options = new   FirestoreRecyclerOptions.Builder<UserAddressModel>()
            .setQuery(query, UserAddressModel.class)
            .build();
     adapterAddress = new AdapterAddress(options);

您无法使用查询获取这些地址。当您需要获取集合中的所有文档或需要过滤它们时,FirestoreRecyclerOptions 对象需要将 QueryCollectionReference 传递给 setQuery() 方法。

您需要做的是获取用户文档的参考并进行 get() 调用:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
usersRef.document(uid).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Map<String, Object> map = document.getData();
            }
        }
    }
});

查看,document.getData() returns 一张地图。简单地遍历地图并获取地址。