2012-02-13 16 views
30

Mam dwa spinners (day_spin i time_spin) w jednym Activity. Chcę zapisać wybraną wartość day_spin w zmiennej. Czy możliwe jest rozróżnienie pomiędzy dwoma spinnerami w tym samym Listener? Czy muszę napisać własną klasę Listener dla każdej przędzarki?Android: dwa Spinner onItemSelected()

Chcę również uzyskać numer wybranego elementu. Na przykład mam String Array z 6 elementami. Wybieram numer 3. Jak mogę uzyskać identyfikator?

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

To jest mój Listener:

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

Mam nadzieję, że może mi pomóc!

Odpowiedz

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 jest najlepszym sposobem, (jeśli inny) jest dla przybysza – Cabezas

+3

@Yaqub Zamiast rzutowania, możemy użycie 'getId()' wezwanie bezpośrednio. np. 'if (parent.getId() == spinnerView.getId()) {...}' – blizzard

+0

masz na myśli to: '' 'if (parent.getId() == R.id.spinner1)' '' – nyxee

3

w onItemSelected metoda

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;    
    } 
Powiązane problemy