Android: Crear spinner programáticamente desde array


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

Esto es lo que tengo:

Este ArrayList contiene los elementos que deberían estar en el spinner (obtiene rellenado de un archivo más adelante):

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

Este es el código que encontré en un sitio que debería 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 un advertencia en Eclipse diciendo "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized", no tengo idea de cómo arreglar esto (o lo que eso significa en primer lugar:)).

Es solo una advertencia y la Aplicación parece funcionar bien, pero todavía me gustaría entender qué está mal y arreglarlo. Cualquier sugerencia es apreciada.

Saludos, Select0r

Author: ישו אוהב אותך, 2010-05-07

5 answers

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); 
 336
Author: Brandon O'Rourke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-08 15:21:36

De la misma manera con Array

// 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);
 102
Author: Yann Masoch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-09 23:08:16

Esto funcionó para mí con un arreglo de cadenas llamado "shoes" cargado de los recursos del proyecto:

    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 hacerlo multilingüe (si es necesario).

 47
Author: Bruno Bieri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-09 08:06:32

Esto realmente 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);
 34
Author: Opy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-14 16:26:17

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.

 5
Author: Arish Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-27 11:55:34