Cómo ordenar una vista de lista en orden alfabético

He estado siguiendo este tutorial aquí sobre cómo hacer mi propio lanzador Android. Actualmente puedo mostrar todas las aplicaciones instaladas en mi teléfono en un listview. ¿Cómo puedo editar este código para que la lista esté en orden alfabético?

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_apps_list); loadApps(); loadListView(); addClickListener(); } private PackageManager manager; private List<AppDetail> apps; private void loadApps(){ manager = getPackageManager(); apps = new ArrayList<AppDetail>(); Intent i = new Intent(Intent.ACTION_MAIN, null); i.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0); for(ResolveInfo ri:availableActivities){ AppDetail app = new AppDetail(); app.label = ri.loadLabel(manager); app.name = ri.activityInfo.packageName; app.icon = ri.activityInfo.loadIcon(manager); apps.add(app); } } private ListView list; private void loadListView(){ list = (ListView)findViewById(R.id.apps_list); ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(this, R.layout.list_item, apps) { @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ convertView = getLayoutInflater().inflate(R.layout.list_item, null); } ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon); appIcon.setImageDrawable(apps.get(position).icon); TextView appLabel = (TextView)convertView.findViewById(R.id.item_app_label); appLabel.setText(apps.get(position).label); TextView appName = (TextView)convertView.findViewById(R.id.item_app_name); appName.setText(apps.get(position).name); return convertView; } }; list.setAdapter(adapter); } private void addClickListener(){ list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> av, View v, int pos, long id) { Intent i = manager.getLaunchIntentForPackage(apps.get(pos).name.toString()); AppsListActivity.this.startActivity(i); } }); } 

Si bien la primera respuesta es la forma correcta y más obvia de hacerlo, creo que una respuesta requiere un ejemplo completo:

 Collections.sort(apps, new Comparator<AppDetail>() { /* This comparator will sort AppDetail objects alphabetically. */ @Override public int compare(AppDetail a1, AppDetail a2) { // String implements Comparable return (a1.label.toString()).compareTo(a2.label.toString()); } }); 

Esto ordenará los objetos AppDetail orden alfabético por su campo de label .

Haga esto antes de llamar a setAdapter() .

Ordena tu List apps antes de ponerla en el ArrayAdapter , usando Collections.sort() .

 Collections.sort(contactList, new Comparator<Map<String, String>>() { @Override public int compare(Map<String, String> o1, Map<String, String> o2) { // TODO Auto-generated method stub String name1 = o1.get("name"); String name2 = o2.get("name"); if (name1 == null) return -1; return name1.compareTo(name2); } }); } 
  • Encuentra la caja de encuadernación de un conjunto de Geopuntos Mapbox
  • Android setOnclicklistener parámetro
  • Cómo reducir la base de datos sqlite?
  • Cómo sintetizar sonidos de piano en android / java
  • FTPClient corrompe las imágenes mientras se sube al servidor ftp en android?
  • Android: ¿Cómo puedo recuperar Edittext.getText () en AlertDialog personalizado?
  • Android Share Intent chooser - Compartiendo TEXTO con Facebook / Twitter Social media etc
  • Crashing debido a "No identificador de paquete al obtener el valor del número de recurso ..."
  • Añadir editText en la barra de acción
  • Cómo obtener la terminación del código de estilo de Eclipse en Android Studio
  • Mensaje "_Problem Loading Widget"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.