2012-02-13 46 views
30

Tôi có hai spinners (day_spin và time_spin) trong một Activity. Tôi muốn lưu giá trị day_spin đã chọn vào một biến. Có thể phân biệt giữa hai spinners trong cùng một Listener không? Hoặc tôi có phải viết riêng lớp học Listener cho mỗi máy quay không?Android: hai Spinner onItemSelected()

Ngoài ra tôi muốn lấy số của mục đã chọn. Ví dụ tôi có String Array với 6 phần tử. Tôi chọn số 3. Làm thế nào tôi có thể nhận được 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); 

Đây là tôi Listener:

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

Tôi hy vọng bạn có thể giúp tôi!

Trả lời

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 là cách tốt nhất, (nếu khác) là dành cho người mới – Cabezas

+3

@Yaqub Thay vì typecasting, chúng ta có thể tận dụng của 'getId()' cuộc gọi trực tiếp. ví dụ, 'if (parent.getId() == spinnerView.getId()) {...}' – blizzard

+0

là bạn có nghĩa là xin vui lòng: '' 'if (parent.getId() == R.id.spinner1)' '' – nyxee

3

trong onItemSelected phương pháp

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;    
    } 
Các vấn đề liên quan