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 :
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);
Le contexte (this) est souligné.

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 :

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));
 
	}
 
}
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
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;
 
	}
}