Bonjour à vous.
J'ai un problème assez gênant que je cherche à résoudre depuis hier.

Je travaille donc sur une ListView :

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 donc une liste contenant 3 activités comme ceci :


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
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>
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é.

J'ai donc essayé ceci :
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());
Sachant que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
items.get(position).getTitre()
me donne bien la donnée dont j'ai besoin, il plante sur les affectations (les 4 dernières ligne)

Voici le log
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
Merci d'avance pour votre aide !




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) :
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);
Par

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);