arrayadapter

Mattepuffo's logo
AutoCompleteTextView da JSON in Android

AutoCompleteTextView da JSON in Android

AutoCompleteTextView è un componente che in pratica si comporta come Google Suggest.

Oggi vediamo come usarlo, e per complicarci la vita, prenderemo in dati in formato JSON da un servizio remoto, e useremo un custom adapter.

Cominciamo con la classe che mappa i dati JSON:

public class Cities {

    private int id;
    private String nome;
    private String paese;
    private double latitudine;
    private double longitudine;

    public Cities(int id, String nome) {
        this.id = id;
        this.nome = nome;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getPaese() {
        return paese;
    }

    public void setPaese(String paese) {
        this.paese = paese;
    }

    public double getLatitudine() {
        return latitudine;
    }

    public void setLatitudine(double latitudine) {
        this.latitudine = latitudine;
    }

    public double getLongitudine() {
        return longitudine;
    }

    public void setLongitudine(double longitudine) {
        this.longitudine = longitudine;
    }

}

I i campi JSON quindi sono:

  • id
  • nome
  • paese
  • latitudine
  • longitudine

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.