Use string array to populate Spinner

10,788

Solution 1

Simplest way to bind ListView and Spinner control with String Array is

android:entries = "@array/nameofarray"

<Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/MainSpinner"
        tools:listitem="@layout/support_simple_spinner_dropdown_item"
        android:entries="@array/Convert_Type"/>

If you want to change the theme of each item of Spinner then put below style into res/values/styles.xml

<style name="ItemTextAppearance">
    <item name="android:textColor">#f00</item>
    <item name="android:textStyle">bold</item>
    <item name="android:typeface">monospace</item>
</style>

and the set

android:theme="@style/ItemTextAppearance"

of spinner.

Solution 2

Use entries attribute in the spinner tag

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/MainSpinner"
    android:entries="@array/Convert_Type"
    tools:listitem="@layout/support_simple_spinner_dropdown_item"/>
Share:
10,788
Jeremy
Author by

Jeremy

Updated on July 23, 2022

Comments

  • Jeremy
    Jeremy almost 2 years

    I'm in the rookie leagues when it comes to Android apps and am looking to populate a Spinner with an Array or strings (it's a converter app) below is an extract from my XML file and I'm looking to populate the the Spinner:

    ......
    <string name="TemperatureString">Temperature</string>
    <string name="WeightString">Weight</string>
    <string name="VolumeString">Volume</string>
    <string name="SpeedString">Speed</string>
    <string name="LengthString">Length</string>
    <string name="AreaString">Area</string>
    <string name="EnergyString">Energy</string>
    <string name="PresureString">Presure</string>
    <string name="MemoryString">Memory</string>
    
    <string-array name="Convert_Type">
        <item>@string/TemperatureString</item>
        <item>@string/WeightString</item>
        <item>@string/VolumeString</item>
        <item>@string/SpeedString</item>
        <item>@string/LengthString</item>
        <item>@string/AreaString</item>
        <item>@string/EnergyString</item>
        <item>@string/PresureString</item>
        <item>@string/MemoryString</item>
    </string-array>
    

    From this, I'm trying to populate my spinner (@+id/MainSpinner) - I'm not sure what I'm doing here but for the activity_main.xml I have the following:

        <Spinner
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/MainSpinner"
            tools:listitem="@layout/support_simple_spinner_dropdown_item"/>
    

    I know there's a way of doing this via Java but I'm even worse at Java! For this reason, I'd like to keep this within xml if possible.

    Also, If someone can want's to point me towards links to bring on my Java and xml skills that would be great - I've started with Udacity and have found them good but there's a lot to take in for a non-IT graduate (I work in finance but find this kinda thing really interesting!)

    Thanks in advance!