【问题标题】:How to populate a spinner with the result of a Firestore query?如何使用 Firestore 查询的结果填充微调器?
【发布时间】:2019-03-04 17:29:52
【问题描述】:

我正在创建一个spinner,它将显示主题名称。主题名称存储在我的 Firestore 数据库中,如下所示:

subjects (collection)
|
|--- SUB01 (document)
|    |
|    |--- name : "Android"
|
|--- SUB02
|    |
|    |--- name : "Java"

我可以将结果提取到 RecyclerView,但无法帮助自己为 spinner 这样做。

【问题讨论】:

    标签: java android firebase google-cloud-firestore spinner


    【解决方案1】:

    要解决这个问题,请使用以下代码行:

    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    CollectionReference subjectsRef = rootRef.collection("subjects");
    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    List<String> subjects = new ArrayList<>();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, subjects);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    subjectsRefRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    String subject = document.getString("name");
                    subjects.add(subject);
                }
                adapter.notifyDataSetChanged();
            }
        }
    });
    

    结果将是一个包含 2 个项目的微调器:

    Android
    Java
    

    【讨论】:

    • 工作就像一个魅力。非常感谢。
    • 完美答案。谢谢
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2016-03-06
    • 2019-09-19
    相关资源
    最近更新 更多