activity

Mattepuffo's logo
Implementare BaseAdapter in Android

Implementare BaseAdapter in Android

Oggi vediamo come implementare un proprio Adapter partendo da BaseAdapter in Android.

Ho dovuto seguire questa strada per avere un maggiore controllo nel caso di dati presi da XML; non ho avuto problemi del genere invece con JSON.

Ma poco male!

Non vedremo come interpretare i dati XML o come popolare la ListView, ma ci limiteremo a creare il nostro Adapter.

Mattepuffo's logo
Usare le SharedPreferences in Android

Usare le SharedPreferences in Android

Tra le opzioni di storage in Android abbiamo le SharedPreferences.

Queste ci permetto di salvare dei dati in formato chiave:valore in maniera molto semplice e intuitiva.

Ho visto in giro addirittura esempi di salvataggio di dati presi da JSON tramite la rete; ecco, forse non è proprio questo lo scopo, ma di sicuro è prefetto per pochi dati da condividere in tutta la app.

Infatti viene usato soprattutto per il salvataggio delle impostazioni / preferenze dell'utente.

Mattepuffo's logo
Riempire una ListView Android da XML

Riempire una ListView Android da XML

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

Oggi vediamo come fare la stessa cosa usando l'altro formato principe per strutturare i dati: XML.

Qua useremo una Activity invece di un Fragment, ma cambia relativamente poco.

Partiamo dalla Activity:

public class MainActivity extends ListActivity {

    private ArrayList list;
    private ArrayAdapter adapter;
    private ReadXml rx;
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = getListView();
        rx = new ReadXml();
        setLista();
    }

    private void setLista() {
        try {
            list = rx.readClienti(getApplicationContext(), Environment.getExternalStorageDirectory() .getAbsolutePath() + File.separator + "dati.xml" ;
        } catch (IOException e) {
        } catch (SAXException e) {
        } catch (ParserConfigurationException e) {
        }
        adapter = new ArrayAdapter(getApplicationContext(),
                android.R.layout.simple_list_item_1, list);
        lv.setAdapter(adapter);

    }

}

Abbiamo un metodo setLista che si occupa di riempire la ListView.

Mattepuffo's logo
Evitare la rotazione di una WebView in Android

Evitare la rotazione di una WebView in Android

Una WebView rappresenta una View nella quale è possibile caricare pagine web (in locale o in remoto).

Il problema del secondo caso è che quanto ruotiamo il dispositivo la app va in crash.

La motivazione dovrebbe essere data dal fatto che ogni volta che ruotiamo lo schermo, la View si ricarica e fa una richiesta.

Una possibile soluzione è quella di bloccare la rotazione, ma in alcuni casi non è una buona soluzione.

Mattepuffo's logo
Creare dei change log in Android

Creare dei change log in Android

Oggi vediamo un semplice di sistema di change log per le nostre app in Android.

Il tutto viene da qua, ed è molto semplice da usare.

Prima di tutto creiamo la classe ChangeLog; essendo un pò lunga vi posto il link dal quale potete copiarla: LINK.

A questo è importante che nel Manifest usiate anche la voce versionName, che usata appunto per specificare le versioni (ad esempio 2.0.7.3); mentre versionCode corrisponde solo alla versione "master" (ad esempio 2).

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).