Ordinamento di una Table in SwiftUI
In questo articolo abbiamo visto come riempire una Table da JSON in SwiftUI.
In questo articolo aggiungiamo un pezzo, e cioè l'ordinamento.
In questo articolo abbiamo visto come riempire una Table da JSON in SwiftUI.
In questo articolo aggiungiamo un pezzo, e cioè l'ordinamento.
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).
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:
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.