2010-05-06 41 views
151

Tôi là người mới sử dụng Android và tôi đang cố tạo một trình xoay tròn theo chương trình và cho nó bằng dữ liệu từ một mảng, nhưng Eclipse cung cấp cho tôi một cảnh báo mà tôi không thể xử lý.Android: Tạo spinner theo chương trình từ mảng

Đây là những gì tôi nhận:

This ArrayList holds the elements that should be in the spinner (gets filled from a file later on):

ArrayList<String> spinnerArray = new ArrayList<String>();

Đây là mã tôi tìm thấy trên một trang web mà nên tạo các spinner:

Spinner spinner = new Spinner(this); 
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this, 
       android.R.layout.simple_spinner_dropdown_item, 
       spinnerArray); 
spinner.setAdapter(spinnerArrayAdapter); 

Bây giờ dòng thứ hai (ArrayAdapter ...) mang lại cho tôi một cảnh báo trong Eclipse nói "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized", tôi không có ý tưởng làm thế nào để sửa lỗi này (hoặc những gì có nghĩa là ở nơi đầu tiên :)).

Đó chỉ là cảnh báo và ứng dụng dường như chạy ổn, nhưng tôi vẫn muốn hiểu điều gì sai và khắc phục sự cố. Bất kỳ gợi ý nào được đánh giá cao.

Greetings, Select0r

Trả lời

321

ArrayAdapter<String> nên làm việc.

ví dụ:

Spinner spinner = new Spinner(this); 
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String> 
      (this, android.R.layout.simple_spinner_item, 
      spinnerArray); //selected item will look like a spinner set from XML 
spinnerArrayAdapter.setDropDownViewResource(android.R.layout 
                .simple_spinner_dropdown_item); 
spinner.setAdapter(spinnerArrayAdapter); 
+0

Tôi cố gắng đó nhưng lỗi chỉ cần thay đổi một chút :) 'Loại an toàn: Các biểu hiện của loại ArrayAdapter cần chuyển đổi không được kiểm soát để phù hợp với ArrayAdapter ' – Select0r

+2

nhận xét để nhanh chóng khi bạn thay đổi nội dung bài viết của bạn :) Tôi đã bỏ lỡ thứ hai ' ', mã của bạn hoạt động ngay bây giờ, cảm ơn rất nhiều! – Select0r

+0

làm thế nào để thực hiện nhấp chuột spinner mục, bạn có thể xin ví dụ .. –

34

Điều này thực sự làm việc cho tôi

Spinner spinner = new Spinner(this); 
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
      this, android.R.layout.simple_spinner_item, spinnerArray); 
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spinner = (Spinner) findViewById(R.id.spinner); 
    spinner.setAdapter(spinnerArrayAdapter); 
+4

Mục đích của 'Spinner spinner = new Spinner (this); 'khi bạn làm điều này' spinner = (Spinner) findViewById (R.id .spinner); ' – mr5

+0

tại sao lỗi : không tìm thấy hàm tạo phù hợp cho ArrayAdapter (, int, DetailData) hàm tạo ArrayAdapter.ArrayAdapter (Ngữ cảnh, int, int, Danh sách ) không được áp dụng? – user151968

99

Trong cùng một cách với Mảng

// Array of choices 
String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"}; 

// Selection of the spinner 
Spinner spinner = (Spinner) findViewById(R.id.myspinner); 

// Application of the Array to the Spinner 
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, colors); 
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view 
spinner.setAdapter(spinnerArrayAdapter); 
+0

Tôi đã làm điều này bằng cách sử dụng một ArrayList vì mảng của tôi đến từ một vòng lặp (không tĩnh). – Jacksonkr

46

này làm việc cho tôi với một chuỗi mảng tên "shoes" được tải từ các dự án r esources:

Spinner spinnerCountShoes = (Spinner)findViewById(R.id.spinner_countshoes); 
    ArrayAdapter<String> spinnerCountShoesArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, getResources().getStringArray(R.array.shoes)); 
    spinnerCountShoes.setAdapter(spinnerCountShoesArrayAdapter); 

Đây là tập tin của tôi tài nguyên (res/values/arrays.xml) với mảng chuỗi:

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
     <string-array name="shoes"> 
      <item>0</item> 
      <item>5</item> 
      <item>10</item> 
      <item>100</item> 
      <item>1000</item> 
      <item>10000</item> 
     </string-array> 
    </resources> 

Với phương pháp này nó dễ dàng hơn để làm cho nó đa ngôn ngữ (nếu cần thiết).

5

tác phẩm này với tôi: -

String[] array = {"A", "B", "C"}; 
String abc = ""; 


Spinner spinner = new Spinner(getContext()); 
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, array); //selected item will look like a spinner set from XML 
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(spinnerArrayAdapter); 

Tôi đang sử dụng một Fragment.

Các vấn đề liên quan