spinner

Mattepuffo's logo
Android Spinner da JSON

Android Spinner da JSON

Oggi vediamo un altro componente importante, lo Spinner, e come riempirlo prendendo i dati dal server in formato JSON.

Lo Spinner è un menu a tendina che ci permette di scegliere tra una serie di valori.

Cominciamo con la richiesta al server per ottenere i dati:

public class Service {

    private final String remote = "http://www.sito.com/service/";
    
    public String getCausali() throws ClientProtocolException, IOException, JSONException {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(remote + "get_causali.php");
        HttpResponse response = client.execute(post);
        HttpEntity entity = response.getEntity();
        BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();
        return sb.toString();
    }
    
}

Tramite HttpClient ci connettiamo al server e con HttpPost inviamo una richiesta POST al file specifico (che in questo caso è in PHP).

Il file sul server esegue la query e restituisce i dati in JSON (guardate qua per un esempio).

Prendiamo il contenuto e lo aggiungiamo a un oggetto StringBuffer.

A questo punto creiamo una classe wrapper che rappresenta la nostra tabella sul db; nel mio caso ho solo due campi:

  • id
  • nome

Ecco il mio esempio:

public class Causali {
    
    private int id;
    private String nome;

    public Causali(int id, String nome) {
        this.id = id;
        this.nome = nome;
    }
    
    public int getId() {
        return this.id;
    }
    
    public String getNome() {
        return this.nome;
    }
    
    @Override
    public String toString() {
        return this.nome;
    }
    
}

Questa classe ci servirà come contenitore.