Bonjour à tous,
Débutant sur Android, je me suis mis dans l'idée de créer une petite application simple et qui me permettrait de me faire la main.
Seulement, j'ai de gros soucis dans mon avancée...
Actuellement, j'ai une fenêtre contenant 2 Spinners.
Le premier doit contenir une liste de Région, et le second une liste d'établissement (Ville) qui dépend de la Région choisie.
Au début, je pensais créer un fichier XML que j'aurais parcouru en xPath comme je l'ai toujours fait. Mais après des heures et des heures de recherche, impossible de trouver comment faire !
J'ai donc créer un fichier Android XML contenant plusieurs string-array.
La première contient la liste des Région.
La seconde la liste des établissement (villes) de la première région.
La dernière contient la liste des établissements (villes) de la seconde région (je n'ai que 2 régions).
Le démarrage se fait correctement, je remplis mon premier Spinner avec un ArrayAdapter. Mais je veut créer un ArrayAdapter pour remplir un autre spinner en fonction de la selection effectuée dans le premier Spinner.
J'ai tenté pas mal de choses... mais impossible de trouver la solution à mon problème !
L'erreur rencontrée est dans le Switch de mon listener.
Lors de la création de l'adapter :
Le contexte (this) est souligné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 unAdapter = ArrayAdapter.createFromResource(this, R.array.etablissementsFrancheCompte, android.R.layout.simple_spinner_dropdown_item);
J'avoue ne plus rien comprendre à ce que je fait, ni même comment corriger mon erreur c'est pourquoi je m'en remet à vous en espérant que vous pourrez m'aider.
En vous remerciant par avance,
Cordialement, Yerffoj
Code principal :
Voici le code de ma classe Listener :
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
36
37
38
39
40
41
42
43
44 package lgt.ptino3.gestionpv; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; public class AjoutPv extends Activity { //Declaration des objets de l'interface graphique Button cmdSuivant; Spinner spRegion, spEtablissement; EditText etNomOuvrage; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); //Liaison du fichier XML avec la classe JAVA setContentView(R.layout.ajoutpv); //Liaison entre les controles JAVA et les objets XML etNomOuvrage=(EditText) findViewById(R.id.etNomOuvrage); cmdSuivant=(Button) findViewById(R.id.cmdSuivant); spRegion=(Spinner) findViewById(R.id.spRegion); spEtablissement=(Spinner) findViewById(R.id.spEtablissement); spEtablissement.setEnabled(false); //AdapterRegion ArrayAdapter<CharSequence> adapterRegion = ArrayAdapter.createFromResource(this, R.array.regions, android.R.layout.simple_spinner_dropdown_item); adapterRegion.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spRegion.setAdapter(adapterRegion); spRegion.setOnItemSelectedListener(new RegionItemSelectedListener(spRegion, spEtablissement, etNomOuvrage)); } }
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 package lgt.ptino3.gestionpv; import android.R.string; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; public class RegionItemSelectedListener implements OnItemSelectedListener { Spinner spEtablissement, spRegion; EditText etNomOuvrage; // ArrayAdapter<CharSequence> adapterEtablissement; public void onItemSelected(AdapterView<?> adapterParent, View view, int position, long id) { // On commence par activer le spinner Etablissement spEtablissement.setEnabled(true); // On recupère ensuite le contenu du spinner de la region int positionRegionChoisie = spRegion.getSelectedItemPosition(); // Affichage dans le champ texte (test) etNomOuvrage.setText(spRegion.getItemAtPosition(positionRegionChoisie) .toString()); // Création de l'arrayAdapter en fonction de le la region ArrayAdapter<CharSequence> adapterEtablissement = null; remplirAdapter(adapterEtablissement, positionRegionChoisie); } public void remplirAdapter(ArrayAdapter<CharSequence> unAdapter, int PositionRegion){ switch (PositionRegion) { case 0: unAdapter = ArrayAdapter.createFromResource(this, R.array.etablissementsBourgogne, android.R.layout.simple_spinner_dropdown_item); unAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); break; case 1: unAdapter = ArrayAdapter.createFromResource(this, R.array.etablissementsFrancheCompte, android.R.layout.simple_spinner_dropdown_item); unAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); break; } } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } public RegionItemSelectedListener(Spinner spDeLaRegion, Spinner spDeLEtablissement, EditText etNomDeLOuvrage) { super(); this.spRegion = spDeLaRegion; this.spEtablissement = spDeLEtablissement; this.etNomOuvrage = etNomDeLOuvrage; } }
Partager