Bonjour,

Je débute sous Android et je me heurte à un problème avec un Spinner.

J'ai bien le bouquin de Mark Murphy (3ème edition), d'où j'ai récupéré un code de démo qui fonctionne bien chez lui.

Problème: ses exemples sont simples et ne comportent toujours qu'une activité, une classe & un fichier de layout xml.

Or mon exemple à moi comprend 3 classes
-> la principale
-> spinner1
-> spinner2
et mes deux Spinner restent désespérément vides.

Je suppose qu'il manque "un lien" quelque part entre mes différents fichiers...

main.xml
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?xml version="1.0" encoding="utf-8"?>
 
<!-- TABLE LAYOUT pour saisie ville + bouton même ligne... sachant qu un TL se transforme en LINEAR LAYOUT (vertical) entre ses balises <table row> -->
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bois"
    android:stretchColumns="1" >
 
    <TextView
        android:id="@+id/selection"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
 
 
    <!-- ***************************** -->
    <!-- ligne saisie ville + chercher -->
    <!-- ***************************** -->
   <TableRow>
 
        <EditText
            android:id="@+id/entry"
            android:layout_span="3"
            android:hint="Entrer une ville"
            android:contentDescription="Entrer une ville"
            android:capitalize="words"
            android:inputType="textAutoCorrect"
         />
 
        <Button
            android:id="@+id/go"
            android:layout_column="2"
            android:contentDescription="lancer la recherche sur la ville"
            android:text="chercher" />
    </TableRow>
 
   <!-- *********************** -->
   <!--  ligne GEOLOCALLISATION -->
   <!-- *********************** -->
   <TableRow>
       <Button
            android:id="@+id/geoloc"
            android:layout_column="1"
            android:layout_width="fill_parent"
            android:layout_span="3"
            android:text="me géolocaliser" />
    </TableRow>
 
   <!-- ****************** -->
   <!-- ligne DEPARTEMENTS -->
   <!-- ****************** -->
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Choisir un département:"
        android:textAppearance="?android:attr/textAppearanceMedium" />
 
    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:contentDescription="choisir un département"
        android:prompt="@string/choix_departement"
        tools:listitem="@android:layout/simple_spinner_item" 
    />
 
   <!-- ************* -->
   <!-- ligne REGIONS -->
   <!-- ************* -->
   <TextView
       android:id="@+id/textView2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Choisir une région:"
       android:textAppearance="?android:attr/textAppearanceMedium" />
 
       <Spinner
        android:id="@+id/spinner2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:hint="choisir une région"
        android:contentDescription="choisir une région"
        android:prompt="@string/choix_region"        
        tools:listitem="@android:layout/simple_spinner_item" 
    />
</TableLayout>
Test.java
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
package com.bidule.mobi;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.EditText;
import android.widget.Toast;
 
public class test extends Activity 
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
SpinnerDepartements.java
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
package com.bidule.mobi;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
public class SpinnerDepartements extends Activity implements AdapterView.OnItemSelectedListener 
{
    private TextView selection;
    private static final String[] items={"-choisir un département-","lorem1", "ipsum1", "dolor1",    "sit1", "amet1", "consectetuer1"};
 
    @Override
    public void onCreate(Bundle icicle) 
    {
 
        super.onCreate(icicle);
        setContentView(R.layout.main);
 
        selection=(TextView)findViewById(R.id.selection);
        Spinner spin=(Spinner)findViewById(R.id.spinner1);
        spin.setOnItemSelectedListener(this);        
        ArrayAdapter<String> aa=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aa);
    }
 
 
    public void onItemSelected(AdapterView<?> parent,View v, int position, long id) 
    {
        selection.setText(items[position]);
    }
 
 
    public void onNothingSelected(AdapterView<?> parent) 
    {
        selection.setText("");
    }
}
SpinnerDepartements.java
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
package com.bidule.mobi;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
public class SpinnerDepartements extends Activity implements AdapterView.OnItemSelectedListener 
{
    private TextView selection;
    private static final String[] items={"-choisir une région-","lorem2", "ipsum2", "dolor2", "sit2", "amet2", "consectetuer2"};
 
    @Override
    public void onCreate(Bundle icicle) 
    {
        super.onCreate(icicle);
        setContentView(R.layout.main);
            selection=(TextView)findViewById(R.id.selection);
        Spinner spin=(Spinner)findViewById(R.id.spinner2);
        spin.setOnItemSelectedListener(this);
        ArrayAdapter<String> aa=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aa);
    }
 
    public void onItemSelected(AdapterView<?> parent,View v, int position, long id) 
    {
        selection.setText(items[position]);
    }
 
    public void onNothingSelected(AdapterView<?> parent) 
    {
        selection.setText("");
    }
}
Mon, problème: les Spinner restent vides.

Quelqu'un saurait-il m'indiquer pourquoi ?

Merci d'avance pour votre aide.