如何使用集合从FirebaseFirestore检索数组



这是我的Firestore数据库

db.collection("PublicFormDetails")
.whereEqualTo("Topic Name",message)
.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful())
{
for (QueryDocumentSnapshot snapshot : Objects.requireNonNull(task.getResult())) {
String value1 = snapshot.getString("QuestionName");
Toast.makeText(PublicVote.this, value1, Toast.LENGTH_SHORT).show();
q_tv1.setText("Question: "+value1);
}
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(PublicVote.this,e.getMessage(), Toast.LENGTH_SHORT).show();
}
});

现在,我想在这里检索以数组形式保存的Description和Number of Options,上面的代码还打印了关于所选主题名称的数据的其他详细信息,因此我使用where EqualTo("主题名称",message(作为我的查询(其中message是我选择的主题(。如何检索描述和编号的选项现在在这个。我不能使用DocumentReference,因为那样我就不能使用where EqualsTo。请帮忙!!!

要获得这两个araay的内容,请在for循环中添加以下两行代码:

List<String> description = (List<String>) snapshot.get("Description");
List<String> noOfOptions = (List<String>) snapshot.get("Np. of Options");

就在这行之后:

q_tv1.setText("Question: "+value1);

如果您需要这些数组中的每个元素,请为每个列表创建一个for循环,并获取相应的数据。

logcat中的结果将是:

Hey
What's up?

对于第一个阵列,和:

123
456

对于第二个数组。

最新更新