我想在collectionGroup()中使用RecyclerView.ViewHolder查询我的FirebaseFirestore上的子集合,但出现错误消息:


  “ collectionGroup(java.lang.String)”在以下位置不公开
  “ com.google.firebase.firestore.FirebaseFirestore”。无法访问
  从外包装


class WallHolder extends RecyclerView.ViewHolder {

        private LinearLayout root, llp, image_layout;
        private RelativeLayout rlp;
        private TextView comment, tv_due, tv_pass;
        private Button btn_play;
        private SeekBar seekBar;
        private ImageView imageView[] = new ImageView[3];

        public WallHolder(@NonNull View itemView) {
            super(itemView);

            root = itemView.findViewById(R.id.list_root);

            llp = root.findViewById(R.id.llp);
            rlp = root.findViewById(R.id.rlp);
            comment = root.findViewById(R.id.tv_cmt);
            image_layout = root.findViewById(R.id.img_layout);

            btn_play = llp.findViewById(R.id.btn_play);

            tv_due = rlp.findViewById(R.id.tv_due);
            tv_pass = rlp.findViewById(R.id.tv_pass);
            seekBar = rlp.findViewById(R.id.seek_bar);

            imageView[0] = image_layout.findViewById(R.id.img_1);
            imageView[1] = image_layout.findViewById(R.id.img_2);
            imageView[2] = image_layout.findViewById(R.id.img_3);
        }


        void setData(final Map<String, Object> post) {

            FirebaseFirestore db = FirebaseFirestore.getInstance();
            final StorageReference storageRef = FirebaseStorage.getInstance().getReference();


            //This is where i get the error
            //db.collectionGroup()
            //


            //This code wasn't working so i want to replace it with the code above
            db.collection("Post")
                    //.document(post.get("post_Id").toString())
                    .document("mnk2EqrVmm3upTFYL4eB")
                    .collection("Post_Images")
                    .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<QuerySnapshot> task) {

                            if (task.isSuccessful()) {
                                final List<Bitmap> list = new ArrayList<>();
                                Toast.makeText(WallActivity.this, String.valueOf(task.getResult().size()), Toast.LENGTH_SHORT).show();

                                for (QueryDocumentSnapshot document : task.getResult()){

                                }
                            } else {

                            }

                        }
                    });
        }
    }

最佳答案

您收到以下错误:


  “ collectionGroup(java.lang.String)”在“ com.google.firebase.firestore.FirebaseFirestore”中不公开。无法从外部包访问


因为在Firestore的早期版本中,FirebaseFirestore的collectionGroup(String collectionId)方法没有定义修饰符,这意味着只能在相同的类和相同的包中进行访问。

由于这两个条件都不满足,因此您可以在类或包之外访问该方法。因此,这意味着您没有使用最新版本。

从2019年5月8日开始,collectionGroup(String collectionId)将公开,因此请将Firestore依赖项升级为:

implementation 'com.google.firebase:firebase-firestore:19.0.0'


您将能够使用该方法。

09-26 07:04