Cómo ordenar cadenas en un dispositivo Android RecyclerView?
string sorting (1)
La forma más fácil de ordenar una lista es usar java.util.Collections
Collections.sort(categories, new Comparator<Categories>() {
@Override
public int compare(Categories lhs, Categories rhs) {
return lhs.title.compareTo(rhs.title);
}
});
Esto comparará el título carácter por personaje. y clasificará su lista de la a la z.
No olvide después de la modificación notificar a la lista que los datos han cambiado con notifyDataSetChanged()
(desde su RecyclerView.Adapter
).
Tengo una recicladora Vista llena de CardViews que tienen 2 parámetros (Ambos son Cuerdas), uno de ellos es un título, me gustaría tener un botón para ordenarlos alfabéticamente según el título.
como no tiene demasiados elementos, decidí usar el tipo de inserción que es o (n ^ 2) y esta es mi implementación:
public void ISortDes(String[]strings){
int j;
String key;
int i;
for (j = 1; j < strings.length; j++)
{
key = strings[ j ];
for(i = j - 1; (i >= 0) ; i--)
{
if (key.compareTo(strings[i]) > 0){
break;
}
strings[ i+1 ] = strings[ i ];
}
strings[ i+1 ] = key;
}
for (int k = 0; k < strings.length; k++){
System.out.println(strings[k]);
}
}
Toma una matriz de cadenas y las ordena.
Y este es el método de mi RecyclerView que toma los parámetros:
private void initializeData() {
categories = new ArrayList<>();
categories.add(new Categories("CARS", "CARS"));
categories.add(new Categories("SPORTS", "SPORTS"));
categories.add(new Categories("GAMING", "GAMING"));
categories.add(new Categories("GAMBLING", "GAMBLING"));
categories.add(new Categories("TECH", "TECH"));
categories.add(new Categories("NATURE", "NATURE"));
categories.add(new Categories("RANDOM", "RANDOM"));
categories.add(new Categories("COUSINE", "COUSINE"));
categories.add(new Categories("HISTORY", "HISTORY"));
categories.add(new Categories("MUSIC", "MUSIC"));
categories.add(new Categories("STUDIES", "STUDIES"));
}
Creo que necesito pasar de algún modo ese primer parámetro a un String Array y luego ordenarlo.
La idea es tener el método de clasificación en un botón en la misma actividad donde se muestra el RecyclerView y cuando se lo presiona debería ordenarlos sin ir a otra actividad.
Estoy un poco perdido aquí.
En resumen, lo que estoy tratando de hacer es tener un botón que ordene los elementos (que en este caso son CardViews) de un RecyclerView alfabéticamente basado en el parámetro "título".
¿Está bien mi idea, tienes otra forma de hacerlo, o qué debo hacer para lograr esto?
Un millón de gracias.