一次性检索firebase数据



我正在尝试检索一个名为jobs的集合,其中每个job包含3个不同的字段。然后,我想在数组列表中显示每个作业的所有3个字段。我的应用程序运行,但它返回一个项目,上面写着:java.lang.field@2234456

这是我的代码:

ListView jobList;
ArrayList<String> jobInfo = new ArrayList<String>();
ArrayAdapter arrayAdapter;
Task hello;
String hi;
FieldPath ha;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_see_jobs2);
jobList = (ListView) findViewById(R.id.jobList);
setTitle("Hello");
arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, jobInfo);
jobList.setAdapter(arrayAdapter);
jobList.setAdapter(arrayAdapter);
hello = FirebaseFirestore.getInstance().collectionGroup("jobs").get().addOnCompleteListener(new 
OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
hi = QuerySnapshot.class.getFields().toString();
hi.toString();
}
});
jobInfo.add(QuerySnapshot.class.getDeclaredFields().toString());
}

这不是从Firestore文档获取数据的方法:

QuerySnapshot.class.getFields()

相反,它会查找在QuerySnapshot类上声明的字段,这根本不是您感兴趣的

如果我们查看有关从多个文档获取数据的Firebase文档,您会发现我们可以使用获取数据

public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}

所以这个:

  1. 对从数据库中返回的文档进行循环
  2. 然后用document.getData()从每个文档中获取数据,返回一个Map

如果您查看DocumentSnapshot类的参考文档,您会发现我们还可以使用获得特定字段的值

document.get("nameOfThefield")

然后,您需要在onComplete方法内将字段值添加到jobInfo.add(...)

最新更新