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.