AlertDialog - "checkedItem"

enjoy_android

enjoy_android

Dauergast
410
Hallo zusammen.

Ich verwende einen AlertDialog mit "singleChoiceItems" die aus einem ArrayAdapter gespeist werden. Dieser Adapter verändert sich die ganz Zeit und die Nutzer können einen Item aus der veränderten Liste wählen. Haben sie einen Item verwendet verschwindet dieser aus der Liste.

Nun habe ich folgendes Problem. In onCreateDialog kann ich den "checkedItem" (Item der vorausgewählt ist) setzen. Wenn ich den Dialog erneut aufrufe wird dieser vom System wiederverwendet und nur noch "onPrepareDialog" aufgerufen. Nun stellt sich mir die Frage wo ich den "checkedItem" im Falle der Wiederverwendung setzen kann. Setze ich diese Position nicht wird immer, die zuletzte selektierte Position, als checked angezeigt. Was in meinem Fall aber ungünstig ist, da dieser Item ja nicht mehr in der Liste vorhanden ist. Ich würde gerne immer den ersten Item auswählen. (unabhängig vom zuletzt gewählten)

Kann mir einer sagen wie ich in "onPrepareDialog" den "checkedItem" setzen kann? Geht das überhaupt? Bis jetzt habe ich keine Möglichkeit gefunden diese Position bei Wiederverwendung des Dialogs zu beeinflussen.

Ich wäre über jede Hilfe dankbar. :)

Gruß und Danke.
 
Das ganze geht wohl nicht. Deswegen habe ich es nun anders gelöst und verwende keine "singleChoiceItems" mehr. Ich setze den Adapter per "setAdapter" im Dialog und dann passt alles. :)
 
Einmal kannst du komplett auf onCreateDialog/onPrepareDialog verzichten und den Dialog selbst anzeigen. Dabei verlierst du allerdings natürlich die eingebaute Funktion, dass der Dialog beim Orientation Change erhalten bleibt, bzw. müsste die selbst einbauen.
OnPrepareDialog hat in Beziehung leider übrigens auch einen bösen Bug: Issue 1639 - android - onPrepareDialog is not called on orientation change - Google Code

Ansonsten ein paar Ideen:

Nachdem du einen Adapter verwendest, kannst du nicht den Adapter aktualisieren, d.h. adapter.notifyDataSetChanged()?

Falls die Checkboxen nicht über den Adapter gefüllt werden, müsste das trotzdem möglich sein (via eigene Adapter-Subklasse, oder ViewBinder verwenden).

Vielleicht kannst du auch einfach die Checkboxen manuell ändern, also via dialog.getListView() oder eventuell dialog.findViewById().
 
Nach allem Testen hätte ich den Dialog selber bauen müssen und keinen Alert Dialog verwenden können. Den Bug kenne ich auch, er ist in Donut schon gefixt. Leider hatte notifyDataSetChanged() keine Auswirkung auf die Checkbox. Im Endeffekt mache ich es jetzt ohne Checkboxen was für meinen Fall auch ok ist.
 

Ähnliche Themen

J
  • Juleru
Antworten
8
Aufrufe
467
Juleru
J
K
Antworten
3
Aufrufe
1.099
swa00
swa00
H
Antworten
7
Aufrufe
1.142
keen
K
Zurück
Oben Unten