android - 如何从 Firestore 中检索数组?

标签 android firebase google-cloud-firestore

我正在使用数组数据结构来保存一些信息,如图所示

Database structure

UserInfo.java

public class UserInfo {
private String userId, age, height;
public UserInfo(String userId, String age, String height) {
    this.userId = userId;
    this.age = age;
    this.height = height;
}
public String getUserId() {
    return userId;
}
public String getAge() {
    return age;
}
public String getHeight() {
    return height;
  }
}

如何获取 array1 和 array2 并将它们保存为 UserInfo 对象? 因为我想填充 Recyclerview 中的数组。

最佳答案

首先您必须检索文档的内容。

一旦您成功检索到 DocumentSnapshot,然后从中获取 Java 对象并使用 Gson 将对象转换为 Json。

然后您可以解析 Json 并生成用户列表。现在您可以在 recyclerview 中填充列表。

FirebaseFirestore db;
List<UserInfo> userList;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);
    db = FirebaseFirestore.getInstance();

    userList = new ArrayList<>();
    DocumentReference docRef = db.collection("users").document("h3cj5y....");// you can use your own here
    docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
        @Override
        public void onSuccess(DocumentSnapshot documentSnapshot) {

            Object object = documentSnapshot.getData();
            String json = new Gson().toJson(object);
            Log.v("json",json);
            try {
                JSONObject infoObj=new JSONObject(json).getJSONObject("info");
                Iterator<String> iterator = infoObj.keys();
                while (iterator.hasNext()) {
                    String key = iterator.next();
                    JSONObject objArray=infoObj.getJSONObject(key);
                    UserInfo user=new UserInfo();
                    user.setAge(objArray.getString("age"));
                    user.setHeight(objArray.getString("height"));
                    user.setUserId(objArray.getString("userId"));
                    userList.add(user);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    });
}

UserInfo.java

public class UserInfo {

private String age;
private String height;
private String userId;

public String getAge() {
    return age;
}

public void setAge(String age) {
    this.age = age;
}

public String getHeight() {
    return height;
}

public void setHeight(String height) {
    this.height = height;
}

public String getUserId() {
    return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}
}

关于android - 如何从 Firestore 中检索数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58113840/

相关文章:

android - 允许除一个 child 以外的所有 child 读写

node.js - 如何使用 Dialogflow 执行 Firebase 身份验证

android - 使用 Xamarin Forms 设置 Android 和 iOS 的推送通知角标(Badge)时遇到问题

arrays - 嵌套的循环无法在Flutter中正常工作

android - 未找到 GLIBC 2.14 - 更新 SDK 和构建工具时进行 Jenkins android gradle 构建

android - 从 Android 设备与外部 MIDI 设备通信

firebase - Flutter Firestore 地理查询

reactjs - 有人知道为什么我得到 'Uncaught Error in snapshot listener: FirebaseError: Missing or insufficient permissions' 吗?

android - Jetpack Compose 中列和行的 Expanded 和 LayoutSize.Expand 的区别

android - DatagramSocket.bind();套接字异常 : cannot assign requested address. Android 模拟器