2012-02-13 30 views
30

Tengo dos spinners (day_spin y time_spin) en uno Activity. Quiero guardar el valor day_spin seleccionado en una variable. ¿Es posible diferenciar entre los dos hilanderos en el mismo Listener? ¿O tengo que escribir mi propia clase Listener para cada spinner?Android: dos Spinner onItemSelected()

También quiero obtener el número del artículo seleccionado. Por ejemplo, tengo String Array con 6 elementos. Selecciono el número 3. ¿Cómo puedo obtener la identificación?

day_spin = (Spinner) findViewById(R.id.spinner); 
    ArrayAdapter<CharSequence> adapter_day = ArrayAdapter 
      .createFromResource(this, R.array.spinner_day_array, 
        android.R.layout.simple_spinner_item); 
    adapter_day 
      .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    day_spin.setAdapter(adapter_day); 
    day_spin.setOnItemSelectedListener(this); 

    time_spin = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<CharSequence> adapter_time = ArrayAdapter 
      .createFromResource(this, R.array.spinner_time_array, 
        android.R.layout.simple_spinner_item); 
    adapter_time 
      .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    time_spin.setAdapter(adapter_time); 
    time_spin.setOnItemSelectedListener(this); 

Ésta es mi Listener:

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
    DAY = parent.getItemAtPosition(pos).toString(); 
    TIME = parent.getItemAtPosition(pos).toString(); 
} 

espero que me puede ayudar!

Respuesta

96
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 

    Spinner spinner = (Spinner) parent; 
    if(spinner.getId() == R.id.spinner1) 
    { 
     //do this      
    } 
    else if(spinner.getId() == R.id.spinner2) 
    { 
     //do this 
    } 

} 
+3

Swith es la mejor manera, (si otra persona) es para el recién llegado – Cabezas

+3

@Yaqub En lugar de encasillamiento, podemos hacer uso de 'getId()' llamada directamente. por ejemplo, 'if (parent.getId() == spinnerView.getId()) {...}' – blizzard

+0

¿quieres decir esto? '' if (parent.getId() == R.id.spinner1) ' '' – nyxee

3

en onItemSelected método

int i = spinnerFirst.getSelectedItemPosition(); 
int j = spinnerSecond.getSelectedItemPosition(); 

String strName1 = yourFirstarray[i]; 
String strName2 = yourSecondarray[j]; 
16
public void onItemSelected(AdapterView<?> parent, View view, 
     int pos, long id) { 
    // An item was selected. You can retrieve the selected item using 
    //parent.getItemAtPosition(pos); 

    //Spinner spnir = (Spinner)parent; 

    parent.getItemAtPosition(pos); 

    TextView tvReadValue = (TextView) findViewById(R.id.tvReadValue); 
    switch (parent.getId()) 
    {   
     case R.id.spinDimension: 

      tvReadValue.setText("spinDimension" + pos); 

      break;    

     case R.id.speedDimension: 

      tvReadValue.setText("speedDimension" + pos); 
      break;    
    } 
Cuestiones relacionadas