2015-09-06 19 views
8

Ho un recyclerView pieno di CardViews che hanno 2 parametri (entrambi sono stringhe), uno di questi è un titolo, mi piacerebbe avere un pulsante per ordinarli alfabeticamente in base alla tittle.Come ordinare le stringhe su Android RecyclerView?

poiché non ha troppi elementi abbiamo deciso di utilizzare l'inserzione che è O (n^2) e questo è il mio applicazione:

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]); 


     } 

      } 

Si prende un array di stringhe e ordini .

E questo è il metodo della mia RecyclerView che prende i parametri:

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")); 

    } 

Penso che ho bisogno di passare in qualche modo quel primo paramater a un array di stringhe e poi ordinarlo.

L'idea è di avere il metodo di ordinamento in un pulsante nella stessa attività in cui è visualizzato il RecyclerView e quando premuto dovrebbe ordinarli senza passare ad un'altra attività.

Sono un po 'perso qui.

Nel riprendere quello che sto cercando di fare è avere un buttom che ordini gli elementi (che in questo caso sono CardViews) di una RecyclerView in ordine alfabetico in base al parametro "titolo".

La mia idea è giusta, hai un altro modo per farlo, o cosa dovrei fare per realizzare questo?

Grazie mille.

risposta

21

Il modo più semplice per ordinare un elenco è quello di utilizzare java.util.Collections

Collections.sort(categories, new Comparator<Categories>() { 
      @Override 
      public int compare(Categories lhs, Categories rhs) { 
       return lhs.title.compareTo(rhs.title); 
      } 
     }); 

Questo metterà a confronto il personaggio del titolo per carattere. e ordinerà la tua lista dalla a alla z.

Non dimenticare dopo la modifica di informare l'elenco che i dati sono stati modificati con notifyDataSetChanged() (dal tuo RecyclerView.Adapter).

+1

Il tuo codice ha funzionato perfettamente per me, ma dove devo applicare il parametro 'notifyDataSetChanged()' nel mio codice? –

+0

Ho risolto il problema applicando 'adapter.notifyDataSetChanged()' dopo il mio ordinamento. Grazie :) –

+0

@SamarthKejriwal Ah sì, non ho precisato l'origine del metodo. Aggiungo da quale classe appartiene il metodo;) – xiaomi

Problemi correlati