Reputation: 47
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
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
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
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
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