【问题标题】: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