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.
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étodoonItemSelected
del spinner. Puedes hacer esto añadiendo: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:
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.