Как получить данные c из базы данных ROOM, когда элемент выбран в Spinner в Android - PullRequest
1 голос
/ 19 января 2020

У меня есть студенческое юридическое лицо, которое оно содержит, имя студента, номер мобильного телефона студента. Я добавляю запись студента, используя имя студента, я выбираю имя студента из счетчика при добавлении новой записи. поэтому мой вопрос: когда я выбираю имя учащегося, я хочу получить номер мобильного телефона этого указанного c студента в текстовом представлении ниже моего счетчика.

Так я получаю все имена в счетчике

 private void loadSpinnerData() {
        studentViewModel = ViewModelProviders.of(this).get(StudentViewModel.class);
        studentViewModel.getAllStudents().observe(this, new Observer<List<Student>>() {
            @Override
            public void onChanged(List<Student> students) {
                String[] nameLists = new String[students.size()];
                for (i = 0; i < students.size(); i++) {
                    nameLists[i] = students.get(i).getStudentName() + " " + students.get(i).getStudentFatherName() +
                            " " + students.get(i).getStudentSurname();
                }
                ArrayAdapter<String> studentNames = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, nameLists);
                studentNames.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                selectStudentName.setAdapter(studentNames);
            }
        });

    }

Это мой адаптер для прядильщика

selectStudentName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(final AdapterView<?> adapterView, View view, final int position, long l) {
                if ( position == -1 ) {
                    Toast.makeText(AddRecord.this, "No record is selected", Toast.LENGTH_SHORT).show();
                } else {
                    String name = adapterView.getItemAtPosition(position).toString();
                    Toast.makeText(AddRecord.this, name + " is selected", Toast.LENGTH_SHORT).show();
                   for (int i = 0; i < adapterView.getCount(); i++ ){

                   }
                }
            }

Как получить номер мобильного телефона выбранного ученика? Спасибо!

1 Ответ

1 голос
/ 19 января 2020

Просто, дорогой, просто используйте объект класса модели представления (studentViewModel), чтобы получить экземпляр данных в реальном времени, как этот-

selectStudentName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(final AdapterView<?> adapterView, View view, final int position, long l) {
                if ( position == -1 ) {
                    Toast.makeText(AddRecord.this, "No record is selected", Toast.LENGTH_SHORT).show();
                } else {
                    String studentMobileNumber = studentViewModel.getAllStudents().getValue().get(position).getMobileNumber()

                }
            }
...