Bonjour à vous.
J'ai un problème assez gênant que je cherche à résoudre depuis hier.
Je travaille donc sur une ListView :
J'ai donc une liste contenant 3 activités comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 lv = (ListView) findViewById(R.id.activiteJour); items = new ArrayList<UneActivite>(); //Je rempli items avec des activités adapter = new CustomListViewAdapter(this, items); lv.setAdapter(adapter);
J'ai mit un listener et quand je clique sur une de ses 3 activités, j'affiche une AlertDialog comme celle ci :
C'est une AlertDialog perso donc voici le .xml, rien de sorcier
Mon problème est donc que quand je clique sur une activité de ma liste, j'affiche la AlertDialog comme sur le screen ci-dessus et je voudrai pouvoir remplacer "titre" par le titre de l'activité sur laquelle j'ai cliqué.
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 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/editer_activite" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#000" android:clickable="false" android:orientation="vertical" > <TextView android:id="@+id/txtTitre1" android:text="Titre" android:textColor="#3FFC00" > </TextView> <TextView android:id="@+id/txtHeureDebut1" android:text="Heure de debut" android:textColor="#FFFFFF" > </TextView> <TextView android:id="@+id/txtHeureFin1" android:text="Heure de fin" android:textColor="#FFFFFF" > </TextView> <TextView android:id="@+id/txtLieu1" android:text="Lieu" android:textColor="#FFFFFF" > </TextView> </LinearLayout>
J'ai donc essayé ceci :
Sachant que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 LayoutInflater factory = LayoutInflater.from(CalendarDayView.this); final View alertDialogView = factory.inflate(R.layout.editer_activite, null); TextView titre = (TextView)findViewById(R.id.txtTitre1); TextView heureD = (TextView)findViewById(R.id.txtHeureDebut1); TextView heureF = (TextView)findViewById(R.id.txtHeureFin1); TextView lieu = (TextView)findViewById(R.id.txtLieu1); titre.setText(items.get(position).getTitre()); heureD.setText(items.get(position).getHeureDeb()); heureF.setText(items.get(position).getHeureFin()); lieu.setText(items.get(position).getLieu());me donne bien la donnée dont j'ai besoin, il plante sur les affectations (les 4 dernières ligne)
Code : Sélectionner tout - Visualiser dans une fenêtre à part items.get(position).getTitre()
Voici le log
Merci d'avance pour votre aide !
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 06-18 17:17:37.588: I/AndroidRuntime(1441): AndroidRuntime onExit calling exit(0) 06-18 17:17:50.029: D/AndroidRuntime(1470): Shutting down VM 06-18 17:17:50.029: W/dalvikvm(1470): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 06-18 17:17:50.029: E/AndroidRuntime(1470): Uncaught handler: thread main exiting due to uncaught exception 06-18 17:17:50.039: E/AndroidRuntime(1470): java.lang.NullPointerException 06-18 17:17:50.039: E/AndroidRuntime(1470): at com.example.medichome.CalendarDayView$6.onItemClick(CalendarDayView.java:351) 06-18 17:17:50.039: E/AndroidRuntime(1470): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 06-18 17:17:50.039: E/AndroidRuntime(1470): at android.widget.ListView.performItemClick(ListView.java:3285) 06-18 17:17:50.039: E/AndroidRuntime(1470): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640) 06-18 17:17:50.039: E/AndroidRuntime(1470): at android.os.Handler.handleCallback(Handler.java:587) 06-18 17:17:50.039: E/AndroidRuntime(1470): at android.os.Handler.dispatchMessage(Handler.java:92) 06-18 17:17:50.039: E/AndroidRuntime(1470): at android.os.Looper.loop(Looper.java:123) 06-18 17:17:50.039: E/AndroidRuntime(1470): at android.app.ActivityThread.main(ActivityThread.java:4363) 06-18 17:17:50.039: E/AndroidRuntime(1470): at java.lang.reflect.Method.invokeNative(Native Method) 06-18 17:17:50.039: E/AndroidRuntime(1470): at java.lang.reflect.Method.invoke(Method.java:521) 06-18 17:17:50.039: E/AndroidRuntime(1470): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 06-18 17:17:50.039: E/AndroidRuntime(1470): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 06-18 17:17:50.039: E/AndroidRuntime(1470): at dalvik.system.NativeStart.main(Native Method) 06-18 17:17:50.069: I/dalvikvm(1470): threadid=7: reacting to signal 3 06-18 17:17:50.069: E/dalvikvm(1470): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 06-18 17:17:52.079: I/Process(1470): Sending signal. PID: 1470 SIG: 9
EDIT : Pu***, je cherche depuis 2 jours, je met 15min à faire ce post, et je trouve la solution 2min plus tard.
Pour ce que ça peut intéresser, il suffit de remplacer (préciser) :
Par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 LayoutInflater factory = LayoutInflater.from(CalendarDayView.this); final View alertDialogView = factory.inflate(R.layout.editer_activite, null); TextView titre = (TextView)findViewById(R.id.txtTitre1); TextView heureD = (TextView)findViewById(R.id.txtHeureDebut1); TextView heureF = (TextView)findViewById(R.id.txtHeureFin1); TextView lieu = (TextView)findViewById(R.id.txtLieu1);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 LayoutInflater factory = LayoutInflater.from(CalendarDayView.this); View alertDialogView = factory.inflate(R.layout.editer_activite, null); TextView titre = (TextView)alertDialogView.findViewById(R.id.txtTitre1); TextView heureD = (TextView)alertDialogView.findViewById(R.id.txtHeureDebut1); TextView heureF = (TextView)alertDialogView.findViewById(R.id.txtHeureFin1); TextView lieu = (TextView)alertDialogView.findViewById(R.id.txtLieu1);
Partager