2012-02-13 16 views
30

Ho due filatori (day_spin e time_spin) in uno Activity. Voglio salvare il valore day_spin selezionato in una variabile. È possibile distinguere tra i due filatori nello stesso Listener? O devo scrivere la mia classe Listener per ogni filatore?Android: due Spinner onItemSelected()

Inoltre desidero ottenere il numero dell'elemento selezionato. Per esempio ho String Array con 6 elementi. Seleziono il numero 3. Come posso ottenere l'ID?

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); 

Questo è il mio Listener:

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

Spero che mi può aiutare!

risposta

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 è il modo migliore, (se altro) è per il nuovo arrivato – Cabezas

+3

@Yaqub Invece di fusione di caratteri, si può fare uso di 'getId()' chiamata direttamente. ad esempio, 'if (parent.getId() == spinnerView.getId()) {...}' – blizzard

+0

intendete questo per favore: '' 'if (parent.getId() == R.id.spinner1)' '' – nyxee

3

in onItemSelected metodo

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;    
    } 
Problemi correlati