我试图在每个文档的两个特定字段中获取数据,其中一个字段是整数,另一个字段是字符串。我希望每个字段分别存储在数组中。
db.collection("Activity")
.whereEqualTo("plan_id", plan_id)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<Long> progressList = new ArrayList<>();
List<String> titleList = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.get("progress"));
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
我尝试过
int[] prog = (int[]) document.get("progress");
String[] title = (String[]) document.get("title");
但没有运气...
答案 0 :(得分:1)
我对Firestore不熟悉,但似乎QueryDocumentSnapshot
与Map<String, Object>
类似。以下代码段显示了如何按照代码中的声明分别将这些值存储到List
中,分别是progressList和titleList。
List<int> progressList = new ArrayList<>();
List<String> titleList = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
progressList.add(Integer.valueOf(document.get("progress").toString()));
titleList.add(document.get("title").toString());
}
如果您仍然想使用Array
来存储值,则可以如下使用API ArrayList.toArray()
:
int[] prog = new int[progressList.size()];
prog = progressList.toArray(prog);
String[] title = new String[titleList.size()];
title = titleList.toArray(title);