Bonsoir,
J'ai réalisé le projet et j'ai développé pas mal. Malheureusement,j'ai un problème avec spinner,c'est quand je veux remplir les valeurs de ville (code postal et ville) dans spinner à partir de la base de données avec l'objet JSON et ça n'affiche pas dans un layout. J'ai cherché le site sur spinner et j'ai testé le bout de code en vain.
Voici le bout de code nécessaire pour remplir un spinner de ville :
C'est la classe FicheMedecin que j'ai de problème du code :
La classe Engine et je n'ai pas de souci avec cette classe mais ça peut vous aider savoir où ça mène à la classe FicheMedecin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private Spinner ville; ..... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ville = (Spinner)findViewById(R.id.spinnerVille); try { ...... ArrayAdapter<Ville> adapter = new ArrayAdapter<Ville>(this, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); List<Ville> villes = Engine.getEngine().getVilles(); for(Ville v : villes){ adapter.add(v); } } catch (EngineException e) { e.printStackTrace(); } }
Une classe Ville : j'ai fait le constructeur,setteur,getteur et toString (code postal et ville). Je ne mets pas ce code car je n'ai pas de problème avec cette classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public ArrayList<Ville> getVilles() throws EngineException { if (!estAutentifier) { throw new EngineException("Vous devez êtres autentifier pour avoir accès!"); } ArrayList<Ville> villes = new ArrayList<Ville>(); try { String phraseJson = getJSON(LIEN + MEDECIN + "?nom=" + nom + "&prenom=" + prenom + "&token=" + token + "&action=getVille", null); JSONObject obj = new JSONObject(phraseJson); if (obj.getString("type").equals("erreur")) { throw new EngineException(obj.getString("message")); } else { JSONObject essai = obj.getJSONObject("contenu"); JSONArray array = essai.names(); for (int i = 0; i < array.length(); i++) { JSONObject med = essai.getJSONObject(array.getString(i)); villes.add(new Ville(med.getLong("id"), med.getString("codePostal"), med.getString("ville"))); } } } catch (JSONException e) { e.printStackTrace(); throw new EngineException(e.getMessage()); } catch (ClientProtocolException ex) { Logger.getLogger(Engine.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(Engine.class.getName()).log(Level.SEVERE, null, ex); } return villes; } public static Engine getEngine() { if (engine == null) { engine = new Engine(); } return engine; }
D'ailleurs,j'ai testé le code et la ville est bien affichée :
Mais pour le spinner dans un layout,ça n'affiche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public static String ADR ; Log.v("ADR" , Engine.getEngine().getVille(new Ville(medComplet.getVille())).getVille());
Je pense que j'ai mal fait avec ArrayAdapter mais pas sûre. Ai-je loupé le code qu'il faut insérer?
Merci d'avance pour votre aide.
Partager