2010-05-06 17 views
151

Soy nuevo en Android y estoy tratando de crear un spinner programáticamente y alimentarlo con datos de un array, pero Eclipse me da una advertencia que no puedo manejar.Android: Crear girador programáticamente desde el array

Aquí es lo que tengo:

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

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

Este es el código que encontré en un sitio que debe crear el spinner:

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

Ahora la segunda línea (ArrayAdapter ...) me da una advertencia en Eclipse diciendo "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized", no tengo idea de cómo solucionar esto (o lo que eso significa en primer lugar :)).

Es solo una advertencia y la aplicación parece funcionar bien, pero aún me gustaría entender qué pasa y arreglarlo. Cualquier sugerencia es apreciada.

Saludos, Select0r

Respuesta

321

ArrayAdapter<String> debería funcionar.

es decir:

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

lo he intentado, pero el error solo cambia ligeramente :) 'seguridad Tipo: La expresión de tipo ArrayAdapter necesita conversión sin control para ajustarse a ArrayAdapter ' – Select0r

+2

comentado de forma rápida mientras editado tu mensaje :) Me perdí el segundo ' ', su código funciona ahora, ¡muchas gracias! – Select0r

+0

cómo implementar el elemento giratorio clic, puede dar ejemplo ... –

34

En realidad, esto funcionó para mí

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

¿Cuál es el propósito de este 'Spinner spinner = new Spinner (this);' cuando haces esto 'spinner = (Spinner) findViewById (R.id .spinner); ' – mr5

+0

error: no se encontró un constructor adecuado para ArrayAdapter (, int, DetailData) constructor ArrayAdapter.ArrayAdapter (Context, int, int, List ) no es aplicable? – user151968

99

De la misma manera, con matriz

// 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

Lo hice usando un ArrayList porque mi matriz proviene de un bucle (no estático). – Jacksonkr

46

Esto funcionó para mí con una cadena de matriz denominada "shoes" cargado desde los proyectos 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); 

Este es mi archivo de recursos (res/values/arrays.xml) con la matriz de cadenas:

<?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> 

Con este método es más fácil para que sea multilingüe (si es necesario).

5

este trabajo para mí: -

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

estoy usando un fragmento.

Cuestiones relacionadas