根据微调器选择填充字段 (firestore)

Filling in fields based on spinner selection (firestore)

我是编程新手,需要帮助 我学会了如何将集合中的数据添加到微调器,但我找不到如何在任何地方填充它的信息,例如,基于微调器位置选择的 TextView 字段。 消防站: [Firestore][1]

public class UserActivity extends AppCompatActivity {

    private TextView tvName, tvCourse, tvGender, tvDescription;
    private ImageButton AddBtn, logoutBtn;
    private Spinner spListStudent;
    private Button btnNextActivity, btnThreeActivity ;
    private FirebaseAuth firebaseAuth;
    private ProgressDialog progressDialog;
    private DatabaseReference ref1;
    private FirebaseFirestore firebaseFirestore;
    private int positionOfSelectedDataFromSpinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user);

        tvName = findViewById(R.id.tvName);
        tvCourse = findViewById(R.id.tvCourse);
        tvGender = findViewById(R.id.tvGender);
        AddBtn = findViewById(R.id.AddBtn);
        logoutBtn = findViewById(R.id.logoutBtn);
        spListStudent = findViewById(R.id.spListStudent);
        btnNextActivity = findViewById(R.id.btnNextActivity);
        btnThreeActivity = findViewById(R.id.btnThreeActivity);

        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Please wait...");
        progressDialog.setCanceledOnTouchOutside(false);

        firebaseAuth = FirebaseAuth.getInstance();
        firebaseFirestore = FirebaseFirestore.getInstance();
        ref1 = FirebaseDatabase.getInstance().getReference("Users");

        logoutBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                firebaseAuth.signOut();
                checkUser();
            }
        });

        AddBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(UserActivity.this, AddCollectionFirestore.class));
            }
        });
        addStudentToSpinner();
    }

    private void checkUser() {
        FirebaseUser user = firebaseAuth.getCurrentUser();
        if (user==null) {
            startActivity(new Intent(UserActivity.this, LoginActivity.class));
            finish();
        } else {
        }
    }

    private void addStudentToSpinner () {

        CollectionReference subjectsRef = firebaseFirestore.collection("accColl").document("usersCollection")
                .collection(firebaseAuth.getUid()).document("coll3").collection("students");
        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);
        spListStudent.setAdapter(adapter);
        subjectsRef.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("nameStudent");
                        subjects.add(subject);
                    }
                    adapter.notifyDataSetChanged();
                }

                spListStudent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        String item = parent.getSelectedItem().toString();
                        Toast.makeText(getApplicationContext(), "Item Selected "+position +
                                " " + item, Toast.LENGTH_SHORT).show();
                        // Variant1
                        
                        subjectsRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                            @Override
                            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                                if (task.isSuccessful()) {
                                    for (QueryDocumentSnapshot qS1 : task.getResult()) {
                                        String stDescr = qS1.getData().get("descriptionStudent").toString();
                                        tvCourse.setText(stDescr);
                                    }
                                }
                            }
                        });

                        // Variant2
                        
                        Query q2 = subjectsRef.orderBy("nameStudent");
                                
                        q2.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {

                                    for (QueryDocumentSnapshot sn1 : task.getResult()) {
                                        String stName = sn1.getData().get("nameStudent").toString();
                                        
                                        tvName.setText(stName);
                                    }
                                } else {
                                }
                            }
                        });
                    }
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
                    }
                });
            }
        });

请帮忙 [1]: https://i.stack.imgur.com/RPjum.png

看来我找到了问题的解决方案。现在,当您更改微调器的位置时,textView 中的数据会发生变化

public class UserActivity5 extends AppCompatActivity {

private TextView tvName, tvCourse, tvGender, tvDescription;
private Spinner spListStudent;

private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private DatabaseReference ref1;
private FirebaseFirestore firebaseFirestore;
private DocumentReference dR1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user5);

    tvName = findViewById(R.id.tvName);
    tvCourse = findViewById(R.id.tvCourse);
    tvGender = findViewById(R.id.tvGender);
    tvDescription = findViewById(R.id.tvDescription);
    spListStudent = findViewById(R.id.spListStudent);

    progressDialog = new ProgressDialog(this);
    progressDialog.setTitle("Please wait...");
    progressDialog.setCanceledOnTouchOutside(false);

    firebaseAuth = FirebaseAuth.getInstance();
    firebaseFirestore = FirebaseFirestore.getInstance();
    dR1 = firebaseFirestore
            .collection("accColl")
            .document("usersCollection")
            .collection(firebaseAuth.getUid())
            .document("coll3");
    ref1 = FirebaseDatabase.getInstance().getReference("Users");

    addStudentToSpinner();
}

private void addStudentToSpinner () {

    CollectionReference subjectsRef = firebaseFirestore
            .collection("accColl")
            .document("usersCollection")
            .collection(firebaseAuth.getUid())
            .document("coll3")
            .collection("students");

    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);
    spListStudent.setAdapter(adapter);

    subjectsRef.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

            for (DocumentSnapshot document : queryDocumentSnapshots.getDocuments()) {
                String subject = document.getString("nameStudent");
                subjects.add(subject);
            }
            adapter.notifyDataSetChanged();

            spListStudent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    String item = parent.getSelectedItem().toString();
                    subjectsRef
                            .whereEqualTo("nameStudent", item)
                            .get()
                            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                                @Override
                                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                    if (task.isSuccessful()) {
                                        for (QueryDocumentSnapshot document : task.getResult()) {
                                            String stName = document.getData().get("nameStudent").toString();
                                            String stDescr = document.getData().get("descriptionStudent").toString();
                                            String stCourse = document.getData().get("courseStudent").toString();
                                            String stPhil = document.getData().get("philosophy").toString();
                                            tvName.setText(stName);
                                            tvGender.setText(stDescr);
                                            tvCourse.setText(stCourse);
                                            double philosophyParse = Double.parseDouble(stPhil);
                                            NumberFormat nf = new DecimalFormat("##.#####");
                                            String phi = String.format(nf.format(philosophyParse));
                                            tvDescription.setText(phi);
                                        }
                                    }
                                    else {
                                    }
                                }
                            });
                }
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                }
            });
        }
    });
}

}