bonjour,
comment je peut creé une listview avec des radio button et comment on peut choisir un seul choix puis on passe à une autre activity par click sur une boutton par exemple "valider".vraimnet je suis bloqué??
bonjour,
comment je peut creé une listview avec des radio button et comment on peut choisir un seul choix puis on passe à une autre activity par click sur une boutton par exemple "valider".vraimnet je suis bloqué??
Ça ne doit pas être très compliqué à faire.
Il faut juste voir que dans getView la vue est soit créé soit modifié.
Il faudrait un listener qui est appelé à chaque fois que tu clique sur un bouton, ensuite tu sais que c'est cette item qui est sélectionné, tu avec un bouton qui sera clicked.
Tu dois pouvoir appeler une méthode du genre notifydatasetchanged.
Et toute ta ListView va se recréer.
Je pense que le plus simple ce serait de faire ta classe qu'extends BaseAdapter et dans getView tu setClicked(false) ou setClicked(true) selon l'item.
Dès qu'il y a un clique tu recréer toute ta ListView.
Je pense que c'est la méthode la plus simple.
mais je suis debutant je ne comprend pas .
T'as liste de villes tu la récupères comment ?
C'est une ArrayList <Ville> ?
C'est un Cursor ?
Suit ce tuto :
http://mickael-lt.developpez.com/tut...iser-listview/
C'est super simple, il faut :
- créer une layout pour la ligne
- créer une classe qu'extends BaseAdapter
- implémenter la méthode getView
Déjà remplit une ListView avec ta liste de ville.
Une fois que t'auras fais ça ce sera quasiment fini.
le resultat doit etre :
et lorsque je click sur le button il va passez à une autre activity
et la selection doit etre unique càd une seule selection(choix)
Bonjour
pourrai tu nous donner ton main.xml ?! pour voir comment tu fais pour afficher ta liste @+
Normalement ça doit juste être une ListView.
Comment as-tu peuplé cette liste ?
Josèphe, George et Marie ils sont dans une ArrayList à la base ?
Tu n'as plus qu'a modifier un peu le getView et d'avoir un listener et c'est bon.
N'importe quel ListView en mode 'single selection', et surtout passer un layout ad-hoc pour les items, à savoir:
android.R.simple_list_item_checked
(ou essayer simple_list_item_single_choice je ne sais pas à quoi il correspond graphiquement).
Eventuellement en changeant le background pour qu'il corresponde à votre souhait.
Ensuite, le bouton valider va juste demander à la liste qu'elle est la selection...
voila mon code:
listgouver.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 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <AbsoluteLayout android:layout_width="match_parent" android:layout_height="534dp" > <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="392dp" android:layout_y="46dp" android:background="@drawable/f" android:drawSelectorOnTop="false" > </ListView> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="0dp" android:layout_y="0dp" android:src="@drawable/gouv" /> <ImageView android:id="@+id/imageView2" android:layout_width="324dp" android:layout_height="73dp" android:layout_x="2dp" android:layout_y="422dp" android:src="@drawable/bla" /> <Button android:id="@+id/vm" android:layout_width="163dp" android:layout_height="wrap_content" android:layout_x="-2dp" android:layout_y="438dp" android:text="Voir Mosquées" android:textColor="#0066FF" /> <Button android:id="@+id/anul" android:layout_width="161dp" android:layout_height="wrap_content" android:layout_x="160dp" android:layout_y="437dp" android:text="Annuler" android:textColor="#0066FF" /> </AbsoluteLayout> </LinearLayout>
listgouver.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
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104 package com.anis.telgps; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckedTextView; import android.widget.ListView; import android.widget.Toast; public class listgouver extends ListActivity implements ListView.OnScrollListener { private static String[] items = { "Tunis", "Ariana", "Bizerte", "Gabes", "Sfax", "Medenine", "Tataouine","kebelie","Gafsa","kasrine","Beja","Zaghwane","Siliana","Jendouba","elkef","bouzid","Mehdia","Nabel","Sousse","Mounastir","tozeur"}; private int[] itemClicked = new int[25]; private boolean selectFlag = false; // this will be changed to true if a private boolean firstTimeFlag = false; // item is clicked @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listgouver); Bundle extras = getIntent().getExtras(); try{ itemClicked = (int[])extras.getIntArray("clicks"); }catch(NullPointerException e){} if(null == itemClicked) { itemClicked = new int[25]; for (int i = 0; i < 25; i++) { itemClicked[i] = 0; } } setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_single_choice, items)); getListView().setOnScrollListener(this); } private void selector(int first,int total) { for (int i = 0; i < total; i++) { View v = getListView().getChildAt(i); CheckedTextView check = (CheckedTextView) v; if(itemClicked[first+i]==1) check.setChecked(true); else check.setChecked(false); } } @Override protected void onListItemClick(ListView l, View v, int position, long id) { selectFlag = true; CheckedTextView check = (CheckedTextView) v; boolean click = !check.isChecked(); check.setChecked(click); if (click) { itemClicked[position] = 1; } else { itemClicked[position] = 0; } } public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(visibleItemCount == 6 && !firstTimeFlag) { selector(0,6); firstTimeFlag = true; } } public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case OnScrollListener.SCROLL_STATE_IDLE: int first = view.getFirstVisiblePosition(); int last = view.getLastVisiblePosition(); int childCount = view.getChildCount(); selector(first,childCount); break; case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: break; case OnScrollListener.SCROLL_STATE_FLING: break; } } }
Déjà, tu n'as pas besoin de faire le setChecked/... normalement c'est fait tout seul...
Ni d'ailleurs de gérer le scroll....
Par contre rien sur l'appui des boutons ?
Salut
pourquoi autant de complication ? il faut voir les choses simplement et faire les choses crescendo sans brûler les étapes![]()
voici un petit exemple :
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 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/List" /> </LinearLayout>
et voici comment remplir ta liste avec la gestion des cliques sur chaque élément :
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 public class TestActivity extends Activity { ListView list ; final String [] items=new String[]{ "Tunis", "Ariana", "Bizerte", "Gabes", "Sfax", "Medenine", "Tataouine","kebelie","Gafsa","kasrine","Beja","Zaghwane","Siliana","Jendouba","elkef","bouzid","Mehdia","Nabel","Sousse","Mounastir","tozeur"}; ArrayAdapter monAdapter ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); monAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_single_choice,items); list=(ListView)findViewById(R.id.List); list.setAdapter(monAdapter); //ICI LE MODE DE CHOIX list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); //A chaque fois que tu cliques sur un élément de la liste list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Log.i("Trop cool je clique sur : ",list.getItemAtPosition(arg2).toString()) //Doc sur la methode depuis google http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html } }); }
tu peux aussi ajouter un button au lieu d'utiliser onItemClick pour le déclenchement d'une nouvelle activity![]()
Partager