Comment dois-je remplir un Android spinner à l'aide d'un JSON web service?

Comment puis-je parse un fichier JSON comme celui-ci, contenant leurs noms et Id et utiliser les valeurs dans le champ "Nom" pour remplir le cône d'etiquettes?

Je veux de la toupie à la sortie de la sélectionné SchoolID à la prochaine activité. E. g. Donc, vous voyez "Hill View Elementary" et si vous sélectionnez cette option, la valeur "HVE" est sortie de la prochaine activité.

{
"schools": [
{
"Name": "Hill View Elementary",
"SchoolID": "HVE"},
{
"Name": "Mill View",
"SchoolID": "MVE"},
{
"Name": "Big School",
"SchoolID": "BSC"},
]
}

Voici le onCreate que j'utilise pour tenter de lire le flux...

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);  

    String readFeed = readFeed();
    try {
      JSONArray jsonArray = new
      JSONArray(readFeed);
      Log.i(MainActivity.class.getName(),
          "Number of entries " + jsonArray.length());

      for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject = jsonArray.getJSONObject(i);

        //Here instead of Logging I want to use each schools "Name" to 
        //be put into an array that I can use to populate the strings 
        //for the spinner

        Log.i(MainActivity.class.getName(), jsonObject.getString("schools"));

      }
    } catch (Exception e) {
      e.printStackTrace();
    }
}

Je suis toujours en train de monter à la vitesse sur Android afin de clarté apprécié.

Ici est readfeed:

public String readFeed() {
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();

    //domain intentionally obfuscated for security reasons
    HttpGet httpGet = new HttpGet("http://www.domain.com/schools.php");
    try 
 {
      HttpResponse response = client.execute(httpGet);
      StatusLine statusLine = response.getStatusLine();
      int statusCode = statusLine.getStatusCode();
      if (statusCode == 200) {
        HttpEntity entity = response.getEntity();
        InputStream content = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(content));
        String
 line;
        while ((line = reader.readLine()) != null) {
          builder.append(line);
        }
      } else {
        Log.e(MainActivity.class.toString(), "Failed to download file");
      }
    } catch (ClientProtocolException e) {
      e.printStackTrace();
    } catch (IOException e)
 {
      e.printStackTrace();
    }
    return builder.toString();
  }

OriginalL'auteur rihallix | 2012-10-16