首页 > 解决方案 > 如何使用 Firestore 对象填充数组

问题描述

我正在尝试使用 Firebase 和 Firestore 制作电子书应用程序。这是数据库的样子:

books
      Book1
             -title:abc
             -category:123 
             -description:123
      Book2 
             -title:xyz
             -category:456
             -description:123

所以基本上我需要从 Firebase-firestore 检索数据并将它们放入一个数组中(我称他为 lstBook),所以这是我尝试过但没有奏效的代码(MainActivity 上没有显示任何内容)

List<book> lstBook;

private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference notebookRef = db.collection("books");


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lstBook = new ArrayList<>();

}

    @Override
protected void onStart() {
    super.onStart();
    notebookRef.addSnapshotListener(MainActivity.this, new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(QuerySnapshot queryDocumentSnapshots, FirebaseFirestoreException e) {
            if (e != null){
                return;
            }

            for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots){
                BookActivity note = documentSnapshot.toObject(BookActivity.class);

                String title = note.getTvtitle();
                String description = note.getTvdescription().toString();

            }
            lstBook.add(new book(title,"test","",R.drawable.themartian));
        }
    });
}

我正在使用 cardView 和 RecyclerView 但我可以通过添加此代码基本上添加书籍(手动)

lstBook.add(new book("Book Title","Category","Description",Image here));

标签: javaandroidarraysfirebasegoogle-cloud-firestore

解决方案


尝试这个:-

@Override
protected void onStart() {
    super.onStart();
    notebookRef.addSnapshotListener(MainActivity.this, new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(QuerySnapshot queryDocumentSnapshots, FirebaseFirestoreException e) {
            if (e != null){
                return;
            }

            for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots){

                String title = documentSnapshot.get("tvtitle").toString();
                String description = documentSnapshot.get("tvcategory").toString();

                lstBook.add(new book(title,"test",description,R.drawable.themartian));

            }
        }
    });
}

推荐阅读