代码之家  ›  专栏  ›  技术社区  ›  Mr. Patel

如何将firestore数据库中的所有文档id提取并存储到阵列适配器

  •  1
  • Mr. Patel  · 技术社区  · 7 年前

    看一看我试图实现的代码。

    public void onClick(View v) {
                    if (position==0) {
                        db.collection("Listening")
                                .get()
                                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                                    @Override
                                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                        if (task.isSuccessful()) {
                                            for (QueryDocumentSnapshot document : task.getResult()) {
                                                if (document != null) {
                                                    AlertDialog.Builder builderSingle = new AlertDialog.Builder(mContext);
    
                                                    builderSingle.setTitle("Select A Test");
    
                                                    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(mContext, android.R.layout.select_dialog_singlechoice);
    
                                                    //  for (int i=0;i<document.getId().;i++) {
    
                                               //  }
                                                    builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                                                        @Override
                                                        public void onClick(DialogInterface dialog, int which) {
                                                            dialog.dismiss();
                                                        }
                                                    });
    
                                                    builderSingle.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
                                                        @Override
                                                        public void onClick(DialogInterface dialog, int which) {
                                                            String strName = arrayAdapter.getItem(which);
                                                            Intent intent=new Intent(mContext,Listening.class);
                                                            intent.putExtra("tname",strName);
                                                            mContext.startActivity(intent);
                                                        }
                                                    });
                                                    builderSingle.show();
                                                } else {
                                                    Log.d("LOGGER", "No such document");
                                                }
                                            }
                                        } else {
                                            Log.w(TAG, "Error getting documents.", task.getException());
                                        }
                                    }
                                });
                        }
                }
            });
    

    这是我的数据库的屏幕截图: Database sreenshot

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alex Mamo    7 年前

    根据你的评论:

    我想取所有文件名

    请使用以下代码获取所有文档ID。

    db.collection("Listening").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            List<String> ids = new ArrayList<>();
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    String id = document.getId();
                    ids.add(id);
                }
            }
            ListView listView = (ListView) findViewById(R.id.list_view);
            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(mContext, android.R.layout.select_dialog_singlechoice, ids);
            listView.setAdapter(arrayAdapter);
        }
    });
    

    结果将是一个包含三个字符串的列表:

    Test 1
    Test 2
    Test 3
    

    ArrayAdapter 具有三个参数的构造函数。

    推荐文章