Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建3个相关微调器,每个微调器从查询中获取数据_Java_Android_Google Cloud Firestore - Fatal编程技术网

Java 如何创建3个相关微调器,每个微调器从查询中获取数据

Java 如何创建3个相关微调器,每个微调器从查询中获取数据,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,嗨,我是一个非常新的Android开发,我有一个功能,我想实现,用户可以选择机构->然后是教育者->然后是课程 我所做的是当活动被打开时,调用一个回调方法来检索Firestore数据库中的所有当前机构 目前,我的代码没有设置我的第三个微调器,即CourseApter,并且从未在EducatorSpinner的onItemSelected中调用我的getAllCourses()方法 我想知道是否有更好的方法来创建3个需要从Firestore数据库查询的依赖微调器,或者我是否朝着正确的方向前进。感谢

嗨,我是一个非常新的Android开发,我有一个功能,我想实现,用户可以选择机构->然后是教育者->然后是课程

我所做的是当活动被打开时,调用一个回调方法来检索Firestore数据库中的所有当前机构

目前,我的代码没有设置我的第三个微调器,即CourseApter,并且从未在EducatorSpinner的onItemSelected中调用我的getAllCourses()方法

我想知道是否有更好的方法来创建3个需要从Firestore数据库查询的依赖微调器,或者我是否朝着正确的方向前进。感谢您的帮助

joinCourseActivity.java

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>