Salut,
Je débute sur Android, et je voudrais faire quelque chose de très simple.
J'ai une combobox, quand je clique dessus, j'ai la liste des éléments qui s'ouvre dans une "popup", et je dois en choisir un (un radio bouton est affiché à droite).
Jusque là, tout va bien.
Maintenant, je voudrais personnaliser le renderer de cette liste, pour y mettre une image (dépendant de l'item) à la place du radiobutton.
Par exemple, si j'ai une liste de "luminosité" avec comme valeur "faible", "moyenne" et forte", je veux mettre une image d'ampoule à faible luminosité, à moyenne luminosité et à forte luminosité, respectivement.
Mais là je rencontre deux problèmes.
Pour expliquer, voici le code. Dans mon activity :
Comme vous le voyez, j'ai remplacé le "dropdownitem" par défaut (ligne en commentaire) par mon propre renderer (R.layout.item).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner spinner = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.brightnesses, android.R.layout.simple_spinner_item); // adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); adapter.setDropDownViewResource(R.layout.item); spinner.setAdapter(adapter); }
Pour commencer, ce fichier XML contient exactement ce que contient android.R.layout.simple_spinner_dropdown_item :
Évidemment, ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="true" android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight" />
Maintenant, je remplace ce .xml avec un renderer personnalisé, par exemple un label suivi d'un bouton :
Là ça fait planter l'application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="TextView" android:id="@+id/textView1" android:layout_weight="1"></TextView> <Button android:layout_height="wrap_content" android:id="@+id/button1" android:layout_width="wrap_content" android:text="Button"></Button> </LinearLayout>
N'est-il pas possible d'utiliser un "LinearLayout" dans un renderer ? Quel est le problème ?
Maintenant, supposons cette première étape résolue, comment "exécuter du code" pour initialiser les autres composants du renderer (sur cet exemple, il faut initialiser le textview + le bouton).
Merci de votre aide.
Partager