Spinner & initialisation de la liste
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:
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:
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:
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:
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.
Fusion : Utilise la fonction Editer
On peut bien mettre plusieurs objets sur un même layout quand même?
Sinon, je ne vois pas trop, en effet.
Ou si j'ai vraiment tout faux méthodologiquement parlant, il faut juste me remettre sur les (bons) rails...
Ce que j'aimerais faire (peut être + facile à comprendre pour vous que mon code brut ci-dessus):
-> 1 champs de saisie d'une ville
-> 1 bouton de lancement de la recherche de cette ville en base
-> 1 Spinner pour le choix du département + récupération de la valeur pour recherche en base
-> 1 spinner pour le choix de la région + récupération de la valeur pour recherche en base
Voilà!