Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Android] Colelctions.sort in entrambi i sensi

    ciao a tutti!
    vorrei fare in modo che al click su una TextView si possa fare il sorting della lista.
    ora come ora se clicco la lista si ordina dalla A alla Z, ma vorrei dare la possibilità di ordinare anche in senso inverso.
    per ora fatto questo:
    codice:
    		txtTitolo = (TextView) findViewById(R.id.h_titolo);
    		txtTitolo.setOnClickListener(new View.OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				Collections.sort(list, new Comparator<HashMap<String, String>>() {
    
    					@Override
    					public int compare(HashMap<String, String> lhs, HashMap<String, String> rhs) {
    						return lhs.get("titolo").compareToIgnoreCase(rhs.get("titolo"));
    					}
    					
    				});
    				adapter.notifyDataSetChanged();
    			}
    		});
    come posso far riconoscere questo comportemnto alla lista?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Non fai prima ad invertire la lista?
    Una volta che l'hai ordinata dalla A alla Z richiami
    codice:
    Collections.reverse (lista);

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Puoi anche ordinare direttamente al contrario.
    Se i tuoi oggetti implementano Comparable:

    codice:
    Collections.sort(list, Collections.reverseOrder())
    Se invece usi un oggetto Comparator:

    codice:
    Collections.sort(list, Collections.reverseOrder(comparator))
    effeffe

  4. #4
    ciao!
    si ma in verità c'è una cosa che non ho capito: quando richiamare, ad esempio, il reverse.
    cioè:
    -clicco la prima volta e ordino per A-Z
    -clicco la seconda volta e ordino per Z-A
    -ecc

    ma come faccio a dirgli: la lista è ordinata per A-Z quindi ordinala per Z-A, e viceversa??

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Tieni traccia dell'ordine con una variabile booleana , ad esempio settata a true se ordinata da A a Z e false se ordini da Z ad A..ovviamente ogni volta che modificherai l'ordine cambierai il valore booleano.


  6. #6
    si questo è quello che più o meno avevo fatto.
    ma pensavo non fosse un granchè soluzione.

    ma se me lo consigliate anche voi allora siamo a posto

    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.