Tengo dos spinner en mi sistema. Ahora tengo que cambiar el valor seleccionado de la segunda ruleta según el primer valor de ruleta. Tan pronto como el usuario cambie el primer valor del rotor, el segundo valor del rotor se configurará automáticamente dependiendo del valor seleccionado del primer girador. ¿Cómo implementar esto?Spinner en el valor Change
Respuesta
Desde el Hello Spinner tutorial:
A continuación, cree una clase anidada que implementa AdapterView.OnItemSelectedListener. Esto proporcionará un método de devolución de llamada que notificará a su aplicación cuando se haya seleccionado un elemento del Spinner. Esto es lo que esta clase debe ser similar:
public class MyOnItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
Toast.makeText(parent.getContext(), "The planet is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
El AdapterView.OnItemSelectedListener requiere los onItemSelected() y onNothingSelected() métodos de devolución de llamada. El primero se invoca cuando se selecciona un elemento de AdapterView, en cuyo caso, un mensaje corto de Toast muestra el texto seleccionado; y el último se invoca cuando desaparece una selección del AdapterView, lo que no sucede en este caso, por lo que se ignora. Ahora, el MyOnItemSelectedListener debe aplicarse al Spinner. Vuelva al método onCreate() y agregue la siguiente línea al final: spinner.setOnItemSelectedListener (new MyOnItemSelectedListener());
En otras palabras, necesita crear un OnItemSelectedListener que modifique el valor de la segunda rueda giratoria y lo conecte al primer girador.
Tienes que poner la condición en onItemSelected del primer spinner. Por este ejemplo se puede obtener el valor de la segunda spinner dependiendo de primera spinner:
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
if(arg0.equals(spin0)){
spin1.setClickable(true);
if(spin0.getSelectedItem().equals("India"))
{
ArrayAdapter <String> s1 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_india);
s1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s1);
}
else if(spin0.getSelectedItem().equals("Pakistan"))
{
ArrayAdapter <String> s2 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_pak);
s2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s2);
}
else if(spin0.getSelectedItem().equals("China"))
{
ArrayAdapter <String> s3 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_china);
s3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s3);
}
}
}
Una ruleta no admite eventos de clic de elemento. Llamar a este método generará una excepción. En su lugar, use AdapterView setOnItemSelectedListener. – felansu
debe definir el onItemSelected() por separado para cada spinner. De lo contrario, el código se ejecuta si se selecciona algo de cualquiera de los giradores.
newCategory.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
String selCat = newCategory.getItemAtPosition(arg2).toString();
if (selCat != "New")
{
loadSpinnerData(topic);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
newTopic.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
loadSpinnerData()
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
- 1. jquery.ui.spinner change
- 2. ¿Cómo obtener el valor de Spinner?
- 3. jQuery valor change event delay
- 4. jQuery .val change no cambia el valor de entrada
- 5. ¿Cómo se obtiene el valor seleccionado de un Spinner?
- 6. change error_message en Zend_Validate_EmailAddress
- 7. ¿Cómo volver al valor predeterminado en spinner onclick?
- 8. Rails change change sequence or order
- 9. Refreshing a Spinner
- 10. androide Spinner: Texto centro verticalmente dentro spinner
- 11. jQuery .change() en el botón de radio
- 12. Spinner no obtiene el foco
- 13. Spinner: enfoque en el primer elemento
- 14. change NSSlider Value programmatically
- 15. jQuery buttonset change
- 16. WPF MVVM Property Change Animation
- 17. ¿Cómo obtener el valor de elemento seleccionado por Spinner en la cadena?
- 18. Android: dos Spinner onItemSelected()
- 19. Java GregorianCalendar change TimeZone
- 20. gwt textbox add change handler
- 21. htmlunit java change input text
- 22. Animate Margin Change en Silverlight
- 23. poniendo escucha "On Change" en jFormattedTextField
- 24. Cambiar NSFetchedResultsController en SegmentedControl change
- 25. Spinner borrar elementos
- 26. evento Change preferencia con jQuery
- 27. desactivación de Spinner en Android
- 28. ¿Cómo crear spinner con el encabezado dentro?
- 29. Android: Open Spinner desde el botón
- 30. xampp change document root
¿No es posible implementarlo sin utilizar "implements"? –
No entiendo la pregunta. Puede crear una clase anónima que implemente la interfaz, pero sí debe crear en algún momento un objeto que implemente esa interfaz para agregarla como un detector para el spinner. – I82Much