es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Accediendo al valor del elemento seleccionado en el selector.

Estoy trabajando en un sistema de registro. Necesito crear facultades obteniendo la entrada del usuario y luego asignar estudiantes a estas facultades. Debo mostrar la información de la facultad cuando se seleccione el nombre de un estudiante. Estoy usando un ArrayList para guardar las entradas de las facultades. También estoy usando un spinner para seleccionar la facultad. Pero de alguna manera no puedo acceder al nombre de la facultad cuando se selecciona un elemento del spinner. Siempre aparece como nulo. Aquí hay partes de mi código.

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

        ArrayList<string> facultyArr = new ArrayList<string>();
    .
    .
    .

    protected void onCreate(Bundle savedInstanceState) {
        spnF.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);

        ArrayAdapter<string> af = new ArrayAdapter<string>(this, android.R.layout.simple_spinner_item, facultyArr);
        af.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spnF.setAdapter(af);
        spnF.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        pos = parent.getSelectedItemPosition();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });
        String facOfStu = facultyArr.get(pos);
    .
    .
    .
    }// fin de onCreate

¿Cómo puedo obtener la facultad seleccionada de un ArrayList inicialmente nulo? Gracias por leer a todos ustedes.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    Para obtener la facultad seleccionada de un ArrayList inicialmente nulo, primero debes agregar facultades al ArrayList utilizando un método que pueda ser llamado según la entrada del usuario. Por ejemplo, puedes crear un botón o un campo de texto que permita a los usuarios agregar facultades al ArrayList.

    Una vez que hayas agregado facultades al ArrayList, puedes configurar el spinner para mostrar las opciones creando un ArrayAdapter con el ArrayList como fuente de datos. Has hecho esto correctamente en tu código.

    Para obtener la facultad seleccionada cuando se selecciona un elemento del spinner, necesitas actualizar el valor de facOfStu dentro del método onItemSelected del spinner. Puedes hacer esto añadiendo:

    String facOfStu = parent.getItemAtPosition(position).toString();
    

    Esto obtendrá el elemento seleccionado del spinner y lo convertirá en una cadena que puedes usar para mostrar la información relevante de la facultad.

    Aquí está el código actualizado:

    public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    
        ArrayList<string> facultyArr = new ArrayList<string>();
        String facOfStu;
    
        protected void onCreate(Bundle savedInstanceState) {
            spnF.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);
    
            ArrayAdapter<string> af = new ArrayAdapter<string>(this, android.R.layout.simple_spinner_item, facultyArr);
            af.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spnF.setAdapter(af);
    
            spnF.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    facOfStu = parent.getItemAtPosition(position).toString();
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
    
                }
    
            });
    
        }//end of onCreate
    
        // método para agregar facultades al ArrayList
        public void addFaculty(String facultyName) {
            facultyArr.add(facultyName);
        }
    
    }
    

    Asegúrate de llamar al método addFaculty cada vez que se agregue una nueva facultad y asegúrate de que el ArrayList no esté vacío antes de seleccionar un elemento del spinner.

Comments are closed.