Tomasz Okraszewski
Tomasz Okraszewski

Reputation: 47

Example for sorted String-array in Spinner

Hi I want to show alphabetical sorted array name="planets_array" in spinner. I found some info about .sort collections and array list but nothing of let me to understand how it's working. So please help me and show me on example. I have in strings.xml:

<string-array name="planets_array">
    <item>Dein Ziel</item>
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
    <item>Jupiter</item>
    <item>Saturn</item>
    <item>Uranus</item>
    <item>Neptune</item>
</string-array>

And in Activity.java:

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Upvotes: 2

Views: 1203

Answers (4)

sushildlh
sushildlh

Reputation: 9056

you can directly use in your xml...........

<Spinner
           android:layout_width="150dp"
           android:layout_height="wrap_content"
           android:id="@+id/namespinner"
           android:entries="@array/planets_array"
           android:spinnerMode="dropdown"/>

use this line in XML android:entries="@array/planets_array"......

OR

change this line..........

    String [] myArray=getResources().getStringArray(R.array.name);
    Arrays.sort(myArray);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item,myArray);

enjoy coding............

Upvotes: 2

PEHLAJ
PEHLAJ

Reputation: 10126

1. Sort planets arrays.

String[] planetsArray = getResources().getStringArray(R.array.planets_array);
List<String> planetsList = Arrays.asList(planetsArray);
Collections.sort(planetsList); //planetsArray will be sorted

2. Pass sorted array list to the Adapter.

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, planetsList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Upvotes: 3

Ankur Samarya
Ankur Samarya

Reputation: 229

    String arr[] = getResources().getStringArray(R.array.planets_array);     
    Comparator<String> stringComparator = new Comparator<String>() {
                    @Override
                    public int compare(String lhs, String rhs) {
                        return lhs.compareTo(rhs);
                    }
                };
  Arrays.sort(arr,stringComparator);

So now got you got sorted array so you can use this in ArrayAdapter

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

Upvotes: 1

Oleg K
Oleg K

Reputation: 5268

you need to sort the array manually

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
String[] planets_array = getResources().getStringArray(R.array.planets_array);
Arrays.sort(planets_array);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, planets_array);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Upvotes: 1

Related Questions