comparator

Mattepuffo's logo
Ordinare una ListView in Android

Ordinare una ListView in Android

Abbiamo visto come riempire una ListView in Android usando dati in formato JSON.

Solo che la lista risulta "statica" nel senso che come ci arriva la leggiamo, e non possiamo ordinarla.

Qui vediamo proprio questo: come ordinare una ListView simulando una tabella con righe e colonne.

Partiamo dalla Activity principale:

public class MainActivity extends Activity {
    
    private TextView txtTitolo = null;
    private TextView txtCreazione = null;
    private ListView listView = null;
    private SimpleAdapter adapter = null;
    private ArrayList> list = new ArrayList>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setLista();
        txtTitolo = (TextView) findViewById(R.id.h_titolo);
        txtCreazione = (TextView) findViewById(R.id.h_creazione);
        txtTitolo.setOnClickListener(new ListSort(list, "titolo", adapter));
        txtCreazione.setOnClickListener(new ListSort(list, "creazione", adapter));
    }
    
    private void setLista() {
        try {
            listView = (ListView) findViewById(R.id.lista_articoli);
            JSONArray jsonArray = new JSONArray(JsonFile.read(path + "blog_articoli.json"));
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jo = jsonArray.getJSONObject(i);
                HashMap map = new HashMap();
                map.put("id", jo.getString("id"));
                map.put("titolo", jo.getString("titolo"));
                map.put("creazione", jo.getString("creazione"));
                map.put("modifica", jo.getString("modifica"));
                map.put("count", jo.getString("count"));
                list.add(map);
            }
            adapter = new SimpleAdapter(this, list, R.layout.rows,
                    new String[] { "titolo", "creazione", "modifica", "count" },
                    new int[] { R.id.titolo, R.id.creazione, R.id.modifica, R.id.count });
            listView.setAdapter(adapter);
        } catch (JSONException e) {
        } catch (Exception e) {
        }
    }

}

Tralascio tutta la parte del recupero dati, partendo che l'abbiate già messa a punto (quella parte non cambia).

Mattepuffo's logo
Listare file e directory in Java

Listare file e directory in Java

Vi posto una semplice classe che permette di listare file e directory in maniera ricorsiva di una cartella che decidete voi.

Nello specifico il programma è per console, ma è facilmente espandibile per un'applicazione grafica.

In avvio di programma vi viene chiesto quale directory volete listare.

Dopo di che partono i vari metodi:

  • sortList
  • listingDir

Mattepuffo's logo
Java Comparator per file e directory

Java Comparator per file e directory

In questo articolo vi spiego come implementare un Camparator per i file e le directory.

Lo scenario è: ho una classe che lista tutti i file e le (sotto)directory di una determinata cartella e voglio che vengano ordinate prima le directory per nome e poi i file per nome.

Un ordinamento classico insomma.

Useremo l'interfaccia pubblica Camparator che serve per ordinare le collezioni.

Questo poi sarà invocato dove vogliamo attraverso i metodi di sorting come Arrays.sort (per gli array) e Collections.sort (per le collezioni).

In pratica così facendo imponiamo noi che ordinamento passare ai metodi sort.

Comparator ha solo due metodi e noi andremo a sovrascrivere il metodo compare (T f1, T f2).

A noi interessano oggetti File.