Android sort ListView alphabetically

Android sort listview alphabetically.

listAdapter = new AppsAdapter(MainActivity.this,R.layout.content_layout,appList);
        final Collator col = Collator.getInstance();
        listAdapter.sort(new Comparator<ApplicationInfo>() {
            @Override
            public int compare(ApplicationInfo lhs, ApplicationInfo rhs) {
                return col.compare(lhs.loadLabel(packageManager),rhs.loadLabel(packageManager));
            }
        });

Comparator<String> ALPHABETICAL_ORDER1 = new Comparator<String>() { 
    public int compare(String object1, String object2) {
        int res = String.CASE_INSENSITIVE_ORDER.compare(object1.toString(), object2.toString()); 
        return res;
    }
}; 

Collections.sort(your array name, ALPHABETICAL_ORDER1);

You didn't called setAdapter(adapter), after sorting your items.

Use like below

adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();

instead of

adapter.clear(); // Useless 
adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list);
adapter.notifyDataSetChanged();

Here is the trick...

private void sortAscending () {
    List<String> sortedMonthsList = Arrays.asList(months);
    Collections.sort(sortedMonthsList);

    months = (String[]) sortedMonthsList.toArray();
}

And for sortAscending, call

sortAscending();
adapter.notifyDatasetChanged();

Similarly, you can implement custom Comparator for sort descending as well...

Hope this helps...:)