2010-04-16 38 views
46

Tôi đang cố gắng lấy chuỗi các mục đã chọn trong số Spinner. Cho đến nay tôi đã nhận được này:Làm thế nào để bạn nhận được giá trị được lựa chọn của Spinner?

bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString()); 

này không hoạt động và đưa ra một ngoại lệ lớp đúc (tôi nghĩ rằng tôi có thể đúc một View đến một widget mà được thừa hưởng nó Rõ ràng là không.!) Vì vậy, làm thế nào để bạn có được lựa chọn giá trị của Spinner?

Trả lời

72

Để lấy giá trị được chọn của một spinner, bạn có thể theo dõi số example này.

Tạo lớp lồng nhau triển khai AdapterView.OnItemSelectedListener. Điều này sẽ cung cấp một phương thức gọi lại sẽ thông báo cho ứng dụng của bạn khi một mục đã được chọn từ Spinner.

Trong phương pháp "onItemSelected" của lớp đó, bạn có thể nhận được các mục được chọn:

public class YourItemSelectedListener implements OnItemSelectedListener { 

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

    public void onNothingSelected(AdapterView parent) { 
     // Do nothing. 
    } 
} 

Cuối cùng, ItemSelectedListener của bạn cần phải được đăng ký trong Spinner:

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
+0

Cảm ơn, điều này có vẻ tuyệt vời! Bằng cách lồng nhau bạn có nghĩa là trong một phương pháp khác (ví dụ như onCreate của một cái nhìn mới)? –

+0

Bạn được chào đón. Các lớp lồng nhau: http: //java.sun.com/docs/books/tutorial/java/javaOO/nested.html – jalopaba

+0

cảm ơn thông tin !! t –

5

Phụ thuộc ay điểm mà bạn muốn để "bắt" các giá trị.

Ví dụ, nếu bạn muốn nắm bắt những giá trị ngay sau khi người dùng thay đổi các mục spinner chọn, sử dụng cách tiếp cận người nghe (cung cấp bởi jalopaba)

Nếu bạn thay vì bắt các giá trị khi người dùng thực hiện trận chung kết nhiệm vụ như nhấp vào nút Gửi, hoặc một cái gì đó, sau đó câu trả lời được cung cấp bởi Rich là tốt hơn.

16

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition()) hoạt động dựa trên mô tả của Rich.

+0

'mySpinner.getSelectedItem()' là tương đương ngắn hơn. Sau đó nối thêm '.toString()' để lấy nó làm chuỗi. – ToolmakerSteve

41

Đơn giản chỉ cần sử dụng này:

spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString(); 

này sẽ cung cấp cho bạn String của mục đã chọn trong Spinner.

+2

Tôi upvoting giải pháp này bởi vì câu trả lời chấp nhận có vẻ quá mức nếu mục tiêu chỉ đơn giản là để có được giá trị được chọn từ Spinner. – ashack

+5

'fields.getSelectedItem(). ToString()' là một tương đương ngắn hơn. – ToolmakerSteve

1

Đây là một cách khác:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int pos, long arg3) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
1

Để có được chỉ là chuỗi giá trị trong việc sử dụng spinner sau:

spinner.getSelectedItem().toString(); 
0
Spinner spinner=(Spinner) findViewById(R.id.spinnername); 
String valueinString = spinner.getSelectedItem().toString(); 

Trong trường hợp giá trị Spinner là int các thợ đúc chư nó để int

int valueinInt=(int)(spinner.getSelectedItem()); 
Các vấn đề liên quan