Java 如何创建3个相关微调器,每个微调器从查询中获取数据
嗨,我是一个非常新的Android开发,我有一个功能,我想实现,用户可以选择机构->然后是教育者->然后是课程 我所做的是当活动被打开时,调用一个回调方法来检索Firestore数据库中的所有当前机构 目前,我的代码没有设置我的第三个微调器,即CourseApter,并且从未在EducatorSpinner的onItemSelected中调用我的getAllCourses()方法 我想知道是否有更好的方法来创建3个需要从Firestore数据库查询的依赖微调器,或者我是否朝着正确的方向前进。感谢您的帮助 joinCourseActivity.javaJava 如何创建3个相关微调器,每个微调器从查询中获取数据,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,嗨,我是一个非常新的Android开发,我有一个功能,我想实现,用户可以选择机构->然后是教育者->然后是课程 我所做的是当活动被打开时,调用一个回调方法来检索Firestore数据库中的所有当前机构 目前,我的代码没有设置我的第三个微调器,即CourseApter,并且从未在EducatorSpinner的onItemSelected中调用我的getAllCourses()方法 我想知道是否有更好的方法来创建3个需要从Firestore数据库查询的依赖微调器,或者我是否朝着正确的方向前进。感谢
public class joinCourseActivity extends AppCompatActivity {
Spinner mInstitutionSpinner;
Spinner mEducatorSpinner;
Spinner mCourseSpinner;
private final static String TAG = "institutionList";
String educatorNames;
//Collection names
final String courseDB = "Courses";
final String educatorDB = "Educators";
final String institutionDb = "Institutions";
FirebaseFirestore db;
ArrayList<String> institutionList = new ArrayList<String>();
ArrayList<String> educatorList = new ArrayList<String>();
ArrayList<String> courseList = new ArrayList<String>();
ArrayAdapter<String> institutionAdapter;
ArrayAdapter<String> educatorAdapter;
ArrayAdapter<String> courseAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course_join);
db = FirebaseFirestore.getInstance();
mInstitutionSpinner = (Spinner) findViewById(R.id.institution_spinner);
mEducatorSpinner = (Spinner) findViewById(R.id.educator_spinner);
mCourseSpinner = (Spinner) findViewById(R.id.course_spinner);
getAllInstitutions(new Callback() {
@Override
public void call() {
institutionAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, institutionList);
mInstitutionSpinner.setAdapter(institutionAdapter);
}
});
mInstitutionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String choice = mInstitutionSpinner.getItemAtPosition(position).toString();
getAllEducators(choice);
educatorAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, educatorList);
mEducatorSpinner.setAdapter(educatorAdapter);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mEducatorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String choice = mEducatorSpinner.getItemAtPosition(position).toString();
getAllCourses(choice);
courseAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, courseList);
mCourseSpinner.setAdapter(courseAdapter);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mCourseSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "Made it here.");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
//Create callback methods
public interface Callback{
void call();
}
public joinCourseActivity getActivity(){
return this;
}
public void getAllInstitutions(Callback callback){
db.collection(institutionDb)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()){
String institution = document.getString("Name");
Log.d(TAG, "Institution from Firestore: " + institution);
if (!institutionList.contains(institution)){
institutionList.add(institution);
}
}
callback.call();
}else{
Log.d(TAG, "Error retrieving documents.");
}
}
});
}
public void getAllEducators(String institutionName){
db.collection(educatorDB)
.whereEqualTo("institution" ,institutionName)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
for (QueryDocumentSnapshot document : task.getResult()){
String educator = document.getString("Last_Names");
if(!educatorList.contains(educator)){
educatorList.add(educator);
Log.d(TAG, educator + " added.");
}
}
}else{
Log.d(TAG, "Error retrieving documents.");
}
}
});
}
public void getAllCourses(String educatorName){
db.collection(courseDB)
.whereEqualTo("institution", educatorName)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for(QueryDocumentSnapshot document : task.getResult()){
String course = document.getString("name");
courseList.add(course);
Log.d(TAG, course + " added.");
}
}else{
Log.d(TAG,"Error retrieving documents.");
}
}
});
}
}
公共类joinCourseActivity扩展了AppCompativity{
微调器微调器;
旋转器;旋转器;旋转器;
纺纱机;
私有最终静态字符串TAG=“institutionList”;
弦乐教育家;
//集合名称
最终字符串courseDB=“Courses”;
最后一个字符串educatorDB=“Educators”;
最终字符串institutionDb=“Institutions”;
FirebaseFirestore数据库;
ArrayList institutionList=新建ArrayList();
ArrayList educatorList=新ArrayList();
ArrayList courseList=新的ArrayList();
ArrayaAdapter研究所Adapter;
阵列适应教育者适应;
ArrayAdapter CourseApter;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u course\u join);
db=FirebaseFirestore.getInstance();
mInstitutionSpinner=(Spinner)findViewById(R.id.institution\u Spinner);
mEducatorSpinner=(Spinner)findViewById(R.id.educator\U Spinner);
mCourseSpinner=(微调器)findViewById(R.id.course\u微调器);
getAllInstitutions(新回调函数(){
@凌驾
公开作废通知(){
institutionAdapter=new ArrayAdapter(getActivity(),android.R.layout.simple\u微调器\u下拉菜单\u项,institutionList);
mInstitutionSpinner.setAdapter(机构适配器);
}
});
mInstitutionSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener()){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
String choice=mInstitutionSpinner.getItemAtPosition(位置).toString();
getAllEducators(选择);
educatorAdapter=new ArrayAdapter(getActivity(),android.R.layout.simple\u微调器\u下拉菜单\u项,educatorList);
mEducatorSpinner.setAdapter(教育家适配器);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
mEducatorSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener()){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
字符串选择=mEducatorSpinner.getItemAtPosition(位置).toString();
获取所有课程(选择);
courseAdapter=newArrayAdapter(getActivity(),android.R.layout.simple\u微调器\u下拉菜单\u项,courseList);
mCourseSpinner.setAdapter(coursedapter);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
mCourseSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
Log.d(标记“在这里制作”);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
//创建回调方法
公共接口回调{
无效调用();
}
public joinCourseActivity getActivity(){
归还这个;
}
public void getAllInstitutions(回调){
数据库收集(机构数据库)
.get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
String institution=document.getString(“名称”);
日志d(标签“Firestore中的机构:+机构”);
如果(!institutionList.contains(institution)){
机构列表。添加(机构);
}
}
callback.call();
}否则{
Log.d(标记“检索文档时出错”);
}
}
});
}
public void getAllEducators(字符串机构名称){
数据库集合(教育者数据库)
.whereEqualTo(“机构”,机构名称)
.get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
String educator=document.getString(“姓氏”);
if(!educatorList.contains(educator)){
教育家。添加(教育家);
Log.d(标签,教育家+“添加”);
}
}
}否则{
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner
android:id="@+id/institution_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginStart="1dp"
android:layout_marginTop="152dp" />
<Spinner
android:id="@+id/educator_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/institution_spinner"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:layout_marginTop="124dp"
android:layout_marginEnd="-7dp" />
<Spinner
android:id="@+id/course_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/educator_spinner"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="2dp"
android:layout_marginTop="136dp"
android:layout_marginBottom="247dp" />
</RelativeLayout>