0

See the code:

private void initFirebase() {
        try {
            for (int i = 1; i < 16; i++) {
                mDatabase.collection(POST_ID).document("1").collection(PREVIEW)
                        .get()
                        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {
                                    for (QueryDocumentSnapshot document : task.getResult()) {
                                        postMap.putAll(document.getData());
                                    }
                                    if (postMap != null) {
                                        Post post = new Post();
                                        post.setTitle(Objects.requireNonNull(postMap.get(POST_NAME)).toString());
                                        post.setDesc(Objects.requireNonNull(postMap.get(POST_DESC)).toString());
                                        post.setUrl(Objects.requireNonNull(postMap.get(POST_URL)).toString());
                                        postList.add(post);
                                    }

                                    setAdapter();
                                } else {
                                    showLog("Error getting documents: " + task.getException());
                                }
                            }
                        });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

instead of for (int i = 1; i < 16; i++) { 16 I want the size which existed in my Firestore Collection. I tried all suggestion, but there is no mDatabase.collection(POST_ID).size()

DB Structure:

Firestore-root
     |
     --- PostId (collecton)
          |
          --- 

I want the size of postId collection.

1 Answers1

0

For size

int count = 0;
db.collection("POST_ID")
    .get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
               count = task.getResult().size();
            } else {
                Log.d(TAG, "Error getting documents: ", task.getException());
            }
        }
    });

private void initFirebase() {
        try {
            for (int i = 0; i < count; i++) {
                mDatabase.collection(POST_ID).document(i).collection(PREVIEW)
                        .get()
                        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {
                                    for (QueryDocumentSnapshot document : task.getResult()) {
                                        postMap.putAll(document.getData());
                                    }
                                    if (postMap != null) {
                                        Post post = new Post();
                                        post.setTitle(Objects.requireNonNull(postMap.get(POST_NAME)).toString());
                                        post.setDesc(Objects.requireNonNull(postMap.get(POST_DESC)).toString());
                                        post.setUrl(Objects.requireNonNull(postMap.get(POST_URL)).toString());
                                        postList.add(post);
                                    }

                                    setAdapter();
                                } else {
                                    showLog("Error getting documents: " + task.getException());
                                }
                            }
                        });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Then use this count variable as size.

OhhhThatVarun
  • 3,981
  • 2
  • 26
  • 49