как добавить элемент в Spinner Android [дубликат]

этот вопрос уже есть ответ здесь:

Как добавить элемент из str в spinner? Я пробовал с ArrayList, ArrayAdapter, но не работал...

String[] str={"item 1","item 2","item 3"}; 
Spinner s=(Spinner)findViewById(R.id.spinner);

3 ответов


вы можете использовать простой ArrayAdapter по умолчанию для достижения вашего требования динамически. Ниже приведен фрагмент кода, за которым вы можете следить и изменять свой метод onCreate для добавления значений в счетчик.

    spinner = (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<String> adapter;
    List<String> list;

    list = new ArrayList<String>();
    list.add("Item 1");
    list.add("Item 2");
    list.add("Item 3");
    list.add("Item 4");
    list.add("Item 5");
    adapter = new ArrayAdapter<String>(getApplicationContext(),
            android.R.layout.simple_spinner_item, list);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

если вы хотите, чтобы значения spinner были добавлены статически, вы можете добавить массив в xml-файл и назначить атрибут entries для блесны. ниже приведен фрагмент кода для этого.

ваш макет XML-файл

<Spinner android:id="@+id/spinner"  
    android:layout_width="fill_parent"                  
    android:drawSelectorOnTop="true"
    android:prompt="@string/spin"
    android:entries="@array/items" />

в вашей матрицы.xml-файл

<string-array name="items">
    <item>Item 1</item>
    <item>Item 2</item>
    <item>Item 3</item>
    <item>Item 4</item>
    <item>Item 5</item>
</string-array>

ссылка на Android имеет хороший пример и вместо использования:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
    R.array.planets_array, android.R.layout.simple_spinner_item);

как указано в примере (это потому, что Spinner заполняется из ранее существовавшего ресурса массива строк, определенного в xml-файле ) вы можете использовать ArrayAdapter конструктор, который принимает список в качестве аргумента, как показано на рисунке:

http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter%28android.content.Context,%20int,%20java.util.List%3CT%3E%29

вы могли бы сделать это вот так:

ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.your_layout,mYourList)

где mYourList может быть ArrayList<String> где вы можете хранить данные, которые вы хотите заполнить ваш Spinner С.


Android Spinners используйте SpinnerAdapter класса. http://developer.android.com/reference/android/widget/SpinnerAdapter.html