Données en entré d'une AlertDialog
Bonjour à vous.
J'ai un problème assez gênant que je cherche à résoudre depuis hier.
Je travaille donc sur une ListView :
Code:
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 :
http://nsa34.casimages.com/img/2013/...1350218182.png
J'ai mit un listener et quand je clique sur une de ses 3 activités, j'affiche une AlertDialog comme celle ci :
http://nsa33.casimages.com/img/2013/...1627315288.png
C'est une AlertDialog perso donc voici le .xml, rien de sorcier
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
| <?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:
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:
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:
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:
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:
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); |