Android FireStore检索为列表

时间:2018-03-30 05:20:50

标签: java android firebase google-cloud-firestore

  

集合

enter image description here

  

我已成功按以下方式推送数据:

 private void onAddItemsClicked() {
    // Get a reference to the restaurants collection
    CollectionReference quotes = mFirestore.collection("quotes");

    for (int i = 0; i < 10; i++) {
        // Get a random Restaurant POJO
        TaskItem item = new TaskItem();
        item.setId(UUID.randomUUID().toString());
        item.setTitle("good life is key to success " + i);
        item.setCategory("Life " + i);

        // Add a new document to the restaurants collection
        quotes.add(item);
    }
}

我想在我的自定义列表对象中检索它,让我们说List<TaskItem> mList;包含所有Firestore数据。

我尝试了以下方式,但没有显示此类文件。

        mQuery = mFirestore.collection("quotes");
        mQuery.document().get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();
                if (document != null && document.exists()) {
                    Log.d("TAG", "DocumentSnapshot data: " + document.getData());
                } else {
                    Log.d("TAG", "No such document");
                }
            } else {
                Log.d("TAG", "get failed with ", task.getException());
            }
        }
    });

我在这里缺少什么?任何参考或帮助

1 个答案:

答案 0 :(得分:2)

要解决此问题,请使用以下代码:

mQuery.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<TaskItem> list = new ArrayList<>();
            for (DocumentSnapshot document : task.getResult()) {
                TaskItem taskItem = document.toObject(TaskItem.class);
                list.add(taskItem);
            }
            Log.d(TAG, list.toString());
        }
    }
});

list现在包含您的所有TaskItem个对象。